如何使用Python和 PIL 压缩图像?
有些组织接收来自数十万或更多人的数据,这些数据主要是文本形式,带有一些图像。大多数人都知道文本部分以表格的形式存储在数据库中,但是图像呢?与文本数据相比,图像很小,但在存储方面构成了更高的空间。因此,为了节省部分空间并保持流程顺利运行,他们要求用户提交压缩图像。由于大多数读者都有一点 CS 背景(无论是在学校还是在大学),他们明白使用在线免费工具压缩图像对他们来说不是一个好习惯。
在 Windows 7 之前,微软曾经提供 MS Office 图片管理器,可以将图像压缩到一定程度,但它也有一些限制。
懂一点Python的可以安装Python ,在命令提示符下(Linux用户终端)使用pip installpillow安装pillow fork 。
你会得到这样的屏幕
将所有文件组合到一个文件夹中,并将文件 Compress.py 保存在同一文件夹中。
使用Python运行Python文件。
以下是该文件的源代码:
Python3
# run this in any directory
# add -v for verbose
# get Pillow (fork of PIL) from
# pip before running -->
# pip install Pillow
# import required libraries
import os
import sys
from PIL import Image
# define a function for
# compressing an image
def compressMe(file, verbose = False):
# Get the path of the file
filepath = os.path.join(os.getcwd(),
file)
# open the image
picture = Image.open(filepath)
# Save the picture with desired quality
# To change the quality of image,
# set the quality variable at
# your desired level, The more
# the value of quality variable
# and lesser the compression
picture.save("Compressed_"+file,
"JPEG",
optimize = True,
quality = 10)
return
# Define a main function
def main():
verbose = False
# checks for verbose flag
if (len(sys.argv)>1):
if (sys.argv[1].lower()=="-v"):
verbose = True
# finds current working dir
cwd = os.getcwd()
formats = ('.jpg', '.jpeg')
# looping through all the files
# in a current directory
for file in os.listdir(cwd):
# If the file format is JPG or JPEG
if os.path.splitext(file)[1].lower() in formats:
print('compressing', file)
compressMe(file, verbose)
print("Done")
# Driver code
if __name__ == "__main__":
main()
压缩前的文件夹:
执行代码的命令行:
PS:进入目录后请运行代码。
代码执行后的文件夹:
您可以清楚地看到压缩文件。