帮我写一个批量压缩图片的python脚本
时间: 2023-10-15 09:02:47 浏览: 150
以下是一个简单的批量压缩图片的Python脚本,使用了Pillow库:
```python
from PIL import Image
import os
# 设置压缩后图片的最大宽度和高度
MAX_WIDTH = 800
MAX_HEIGHT = 800
# 遍历指定文件夹下的所有图片文件并压缩
def compress_images(folder):
for filename in os.listdir(folder):
if filename.endswith('.jpg') or filename.endswith('.jpeg') or filename.endswith('.png'):
filepath = os.path.join(folder, filename)
with Image.open(filepath) as img:
# 获取原始图片的宽度和高度
width, height = img.size
# 如果图片大小超过最大限制,则等比例缩小
if width > MAX_WIDTH or height > MAX_HEIGHT:
ratio = min(MAX_WIDTH / width, MAX_HEIGHT / height)
new_size = (int(width * ratio), int(height * ratio))
img = img.resize(new_size, Image.ANTIALIAS)
# 保存压缩后的图片
new_filename = os.path.splitext(filename)[0] + '_compressed' + os.path.splitext(filename)[1]
new_filepath = os.path.join(folder, new_filename)
img.save(new_filepath, optimize=True, quality=85)
# 测试
if __name__ == '__main__':
folder = './images'
compress_images(folder)
```
在脚本中,首先设置了压缩后图片的最大宽度和高度,然后定义了一个`compress_images`函数用于遍历指定文件夹下的所有图片文件并压缩。
对于每个图片文件,首先使用Pillow库的`Image.open`函数打开图片,并获取原始图片的宽度和高度。如果图片大小超过最大限制,则计算等比例缩小后的尺寸,并使用`Image.resize`函数缩小图片。最后,使用`Image.save`函数保存压缩后的图片,可以通过`optimize`参数开启优化以减小图片大小,也可以通过`quality`参数设置压缩质量。
在脚本的最后,调用`compress_images`函数并传入要压缩的图片所在文件夹路径即可。
阅读全文