帮我写一个批量压缩图片到指定体积的python脚本
时间: 2024-05-01 11:16:54 浏览: 96
以下是一个简单的 Python 脚本,用于批量压缩指定大小的图片:
```python
import os
from PIL import Image
# 需要压缩的目录
input_dir = "/path/to/input_directory"
# 压缩后的目录
output_dir = "/path/to/output_directory"
# 压缩后的目标大小(单位为 KB)
target_size = 100
def compress_image(input_image_path, output_image_path):
with Image.open(input_image_path) as image:
# 获取原图尺寸
width, height = image.size
# 将长宽比例缩放至 800x600 以内
if width > 800 or height > 600:
ratio = min(800 / width, 600 / height)
new_size = (int(width * ratio), int(height * ratio))
image = image.resize(new_size)
# 将图片质量压缩至 60%
image.save(output_image_path, optimize=True, quality=60)
def main():
# 遍历目录中的所有图片文件
for filename in os.listdir(input_dir):
if not filename.endswith(".jpg"):
continue
input_image_path = os.path.join(input_dir, filename)
output_image_path = os.path.join(output_dir, filename)
# 压缩图片并保存至输出目录
compress_image(input_image_path, output_image_path)
# 检查图片大小是否符合目标大小要求
if os.path.getsize(output_image_path) / 1024 > target_size:
# 如果图片大小超过目标大小,则循环压缩,直到满足要求为止
while os.path.getsize(output_image_path) / 1024 > target_size:
compress_image(output_image_path, output_image_path)
if __name__ == "__main__":
main()
```
使用时,只需将 `input_dir` 修改为需要压缩的图片所在的目录,将 `output_dir` 修改为压缩后图片保存的目录,将 `target_size` 修改为目标大小(单位为 KB),然后运行脚本即可。脚本会遍历目录中的所有 `.jpg` 格式的图片,将图片压缩至指定大小,并保存至输出目录。如果图片大小超过目标大小,则会循环压缩,直到满足要求为止。
阅读全文