下面是使用Python批量压缩图片的完整步骤:
步骤一:安装必要的Python库
在使用Python批量压缩图片前,我们需要安装Python的pillow库和os库。
pip install pillow
安装完成后,使用import语句载入pillow库和os库:
import os
from PIL import Image
步骤二:定义压缩图片函数
我们需要定义一个函数来完成压缩图片的操作。下面是一个简单的压缩函数:
def compress_image(infile, outfile):
try:
with Image.open(infile) as im:
im.save(outfile, 'JPEG', quality=70)
except OSError:
print("Cannot convert", infile)
这个函数接收两个参数,一个是输入的图片文件路径,另一个是输出的文件路径。函数中使用pillow库的Image.open方法打开图片,并使用save方法保存,重要的参数是quality,它决定了输出的图片质量,值的范围为0到100,数值越大表示质量越高,对应的文件大小也就越大。
步骤三:扫描所有待处理图片
在压缩图片前,我们需要扫描目录下的所有图片,找到需要处理的文件。
def batch_compress_image(input_dir, output_dir):
if not os.path.exists(output_dir):
os.makedirs(output_dir)
files = os.listdir(input_dir)
valid_images = [".jpg", ".jpeg", ".png", ".gif"]
for file in files:
extension = os.path.splitext(file)[1]
if extension.lower() in valid_images:
infile = os.path.join(input_dir, file)
outfile = os.path.join(output_dir, file)
compress_image(infile, outfile)
这个函数接收两个参数,一个是输入的图片文件夹路径,另一个是输出的文件夹路径。在函数中,我们使用os库的方法读取输入文件夹中的所有文件。使用splitext方法获取文件扩展名,如果扩展名是图片格式,则调用compress_image方法对图片进行压缩。
步骤四:使用批量压缩图片函数
有了两个函数,我们可以编写主要的程序,调用批量压缩图片函数,将待处理的图片压缩后存储到新的文件夹。例如,如果我们的待处理图片存放在D:\pictures文件夹下,我们可以使用下面的代码压缩这个文件夹中的图片:
input_dir = 'D:\pictures'
output_dir = 'D:\compressed'
batch_compress_image(input_dir, output_dir)
在上面的代码中,我们将压缩后的文件存放在D:\compressed文件夹下。
示例说明
示例一:
我们现在有一个包含10张jpg图片的文件夹MyPictures,我们需要将这些jpg图片压缩到质量为60,然后存放到一个新的文件夹CompressedPictures中。那么我们需要使用下面的代码:
input_dir = 'MyPictures'
output_dir = 'CompressedPictures'
batch_compress_image(input_dir, output_dir)
示例二:
我们现在有一个包含20张png图片的文件夹MyPngPictures,由于文件夹路径中有中文字符,可能会导致一些错误,所以我们需要使用绝对路径。我们需要将这些png图片压缩到质量为80,然后存放到一个新的文件夹CompressedPngPictures中。那么我们需要使用下面的代码:
import os
input_dir = 'D:\MyTest\MyPngPictures'
output_dir = 'D:\MyTest\CompressedPngPictures'
batch_compress_image(input_dir, output_dir)
在上述代码中,我们可以看到文件夹路径前加上了绝对路径D:\MyTest,以避免中文字符的使用问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python批量压缩图像的完整步骤 - Python技术站