如何用python批量无损压缩照片
时间: 2024-09-08 09:00:56 浏览: 18
在Python中,可以使用`Pillow`库(前身为PIL)和`zipfile`模块来进行批量图片的无损压缩。这里提供一个基本步骤:
1. 首先,安装所需的库:
```bash
pip install pillow zipfile
```
2. 导入所需模块:
```python
from PIL import Image
import os
import zipfile
```
3. 定义一个函数,用于压缩单张图片并将其添加到ZIP文件:
```python
def compress_image(image_path, zip_name, quality=95):
try:
with Image.open(image_path) as img:
# 使用JPEG质量调整,范围从0(最低)到100(最高),默认95
img.save(image_path + '.jpg', 'JPEG', optimize=True, quality=quality)
with zipfile.ZipFile(zip_name, 'a') as my_zip:
my_zip.write(image_path + '.jpg', arcname=os.path.basename(image_path))
os.remove(image_path + '.jpg') # 删除原图后保留压缩后的版本
except Exception as e:
print(f"Error compressing {image_path}: {e}")
```
4. 循环遍历图片目录,并调用`compress_image`函数对每张图片进行压缩:
```python
def batch_compress_images(directory, output_zip):
for filename in os.listdir(directory):
if filename.endswith(('.jpg', '.jpeg', '.png')):
image_path = os.path.join(directory, filename)
compress_image(image_path, output_zip)
# 调用函数,传入图片源目录和目标压缩文件名
batch_compress_images('source_directory', 'compressed_images.zip')
```
在这个例子中,`source_directory`是你存放图片的文件夹路径,`compressed_images.zip`是你希望创建的压缩文件名。