详解如何使用Python和PIL来压缩图像

  • Post category:Python

使用Python和PIL(Python Imaging Library)来压缩图像需要先安装Pillow库(PIL的一个分支),在命令行中输入以下命令即可安装:

pip install Pillow

在安装完成后,我们就可以开始压缩图像了。下面是具体的步骤:

1. 导入所需模块

首先需要导入Pillow模块,以及os模块(如果需要遍历文件夹中的所有图片进行压缩):

from PIL import Image
import os

2. 打开图片

使用Pillow中的Image.open()函数打开图片,并获取图片尺寸、格式等信息。

image = Image.open('image.jpg')
width, height = image.size  # 获取图片尺寸
image_format = image.format  # 获取图片格式

3. 压缩图片

使用Image.save()函数对图片进行压缩,第一个参数为压缩后图片的路径和名称,第二个参数为压缩质量(0-100),当压缩质量为60时,压缩比为原图片的60%:

# 压缩质量为60
image.save('compressed_image.jpg', quality=60)

示例1:批量压缩某个目录下的所有图片

# 遍历指定目录下的所有图片,并进行压缩
dir_path = 'path/to/images'
save_path = 'path/to/compressed/images'

for filename in os.listdir(dir_path):
    if filename.endswith('.jpg') or filename.endswith('.png'):
        # 打开图片并进行压缩
        image = Image.open(os.path.join(dir_path, filename))
        image.save(os.path.join(save_path, filename), quality=60)

示例2:压缩指定尺寸的图片

# 打开图片并进行压缩
image = Image.open('image.jpg')
width, height = image.size
max_size = 1000  # 图片最大边长限制

if width > max_size or height > max_size:
    # 对超出最大尺寸限制的图片进行压缩
    if width > height:
        new_width = max_size
        new_height = new_width * height // width
    else:
        new_height = max_size
        new_width = new_height * width // height

    image = image.resize((new_width, new_height))
    image.save('compressed_image.jpg', quality=60)