WEBKT

Python脚本批量无损压缩图片,让网站飞起来!

162 0 0 0

作为一名站长,图片优化绝对是提升网站速度的关键一环。体积庞大的图片不仅占用服务器空间,还会拖慢网页加载速度,影响用户体验。今天,我就来分享一个用Python编写的脚本,可以批量压缩指定目录下所有图片,而且尽可能保持图片质量不变,让你的网站瞬间起飞!

需求分析

我们的目标是:

  1. 批量处理: 能够一次性压缩指定目录下的所有图片,无需手动一张张处理。
  2. 无损压缩: 尽可能在不损失图片视觉质量的前提下,减小图片体积。
  3. 易于使用: 脚本简单易懂,方便修改和使用。

技术选型

  • Python: 脚本语言,语法简洁,易于学习,拥有丰富的第三方库。
  • PIL (Pillow): Python Imaging Library,强大的图片处理库,可以进行图片格式转换、缩放、压缩等操作。
  • os: Python内置库,用于文件和目录操作。

环境搭建

首先,确保你已经安装了Python环境。然后,使用pip安装Pillow库:

pip install Pillow

代码实现

下面是完整的Python脚本代码:

import os
from PIL import Image

def compress_images(directory, quality=85):
    """批量压缩指定目录下的所有图片。"""
    for filename in os.listdir(directory):
        if filename.endswith(('.jpg', '.jpeg', '.png', '.gif')):
            filepath = os.path.join(directory, filename)
            try:
                image = Image.open(filepath)
                # 针对PNG格式进行特殊处理,转换为RGB
                if image.mode == "RGBA":
                    image = image.convert("RGB")
                # 提取文件名和扩展名
                name, ext = os.path.splitext(filename)
                # 构造新的文件名,加上compressed前缀
                new_filename = f"{name}_compressed{ext.lower()}"
                new_filepath = os.path.join(directory, new_filename)
                image.save(new_filepath, optimize=True, quality=quality)
                print(f"压缩成功: {filename} -> {new_filename}")
            except Exception as e:
                print(f"压缩失败: {filename}, 错误信息: {e}")

# 指定要压缩的图片目录
directory = './images'  # 替换成你的图片目录

# 设置压缩质量,范围是0-95,数值越大,质量越高,文件越大
quality = 85  # 可以根据需要调整

compress_images(directory, quality)
print("压缩完成!")

代码解释:

  1. 导入库: 导入osPIL库。
  2. compress_images函数:
    • 接收图片目录和压缩质量作为参数。
    • 遍历目录下的所有文件。
    • 判断文件是否为图片格式(.jpg, .jpeg, .png, .gif)。
    • 使用PIL.Image.open()打开图片。
    • 使用image.save()保存压缩后的图片,optimize=True表示启用优化,quality参数控制压缩质量,数值越小,压缩率越高,图片质量越低。
  3. 指定目录和压缩质量: 根据实际情况修改directoryquality变量。
  4. 调用函数: 调用compress_images()函数,开始压缩。

使用方法

  1. 将代码保存为Python文件,例如compress.py

  2. 将需要压缩的图片放在同一个目录下,例如images

  3. 修改代码中的directory变量,指向你的图片目录。

  4. 根据需要修改quality变量,调整压缩质量。

  5. 在命令行中运行脚本:

    python compress.py
    

脚本运行完成后,压缩后的图片会保存在原目录下,文件名会加上_compressed后缀。

优化建议

  • 批量格式转换: 可以在脚本中添加图片格式转换功能,将所有图片转换为更高效的WebP格式。
  • 多线程处理: 使用多线程可以加快压缩速度,特别是在处理大量图片时。
  • 异常处理: 完善异常处理机制,提高脚本的健壮性。
  • 质量控制: 可以根据图片类型和尺寸,动态调整压缩质量,以达到最佳效果。

效果评估

quality参数是控制压缩质量的关键。建议根据实际情况进行调整,找到质量和大小之间的最佳平衡点。一般来说,quality=85可以在保证图片视觉质量的前提下,显著减小图片体积。你可以使用一些在线图片压缩工具(例如TinyPNG、Compressor.io)来对比压缩效果。

重要提示: 在进行批量压缩操作之前,务必备份你的原始图片,以防万一!

总结

通过这个简单的Python脚本,你可以轻松实现图片的批量无损压缩,优化网站性能,提升用户体验。快去试试吧,让你的网站飞起来!希望这篇文章对你有所帮助,如果你有任何问题或建议,欢迎在评论区留言交流!

参考资料:

网站优化小能手 Python图片压缩批量处理

评论点评