How to compress images using Python and PIL?
Last Updated :
18 Aug, 2020
There are organizations who receive data form lakhs or more persons, which is mostly in form of text, with a few images. Most of you know that the text part is stored in databases in the form of tables, but what about the images? The images are small compared to the textual data but constitute a much higher space in terms of storage. Hence, to save on the part of space and keep running the processes smoothly, they ask the users to submit the compressed images. As most of the readers have a bit of CS background(either in school or college), they understand that using online free tools to compress images is not a good practice for them.
Till Windows 7, Microsoft used to give MS Office Picture Manager which could be used to compress images till an extent, but it also had some limitations.
Those who know a bit of python can install python and use pip install pillow in command prompt(terminal for Linux users) to install pillow fork.
You’ll get a screen like this
Assemble all the files in a folder and keep the file Compress.py in the same folder.
Run the python file with python.
Below is the Source Code of the file:
Python3
import os
import sys
from PIL import Image
def compressMe( file , verbose = False ):
filepath = os.path.join(os.getcwd(),
file )
picture = Image. open (filepath)
picture.save( "Compressed_" + file ,
"JPEG" ,
optimize = True ,
quality = 10 )
return
def main():
verbose = False
if ( len (sys.argv)> 1 ):
if (sys.argv[ 1 ].lower() = = "-v" ):
verbose = True
cwd = os.getcwd()
formats = ( '.jpg' , '.jpeg' )
for file in os.listdir(cwd):
if os.path.splitext( file )[ 1 ].lower() in formats:
print ( 'compressing' , file )
compressMe( file , verbose)
print ( "Done" )
if __name__ = = "__main__" :
main()
|
Folder Before Compression:
Folder before running file
Command Line for executing Code:
PS: Please run code after getting into the directory.
Command Line for executing Code
Folder after execution of Code:
Folder after running code
You can clearly see the compressed file.
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...