批量压缩文件夹里的图片(python)

目录

拥有python

单个文件夹压缩脚本

批量文件夹压缩(原地)​​​​​​

起源是我收藏了很多照片,但是太大的照片不利于分享使用,而且我并不需要那么高清晰度,通过在线压缩工具tinypng又太慢

拥有python

下载python教程有很多,但我推荐使用anaconda管理python,可以灵活的管理python版本,还不会导致本地版本冲突

单个文件夹压缩脚本

安装pillow库,我在pycharm里可以直接安装到conda里,实在好管理

pip install Pillow

使用r反斜杠\不会被当作转义字符来处理

下面代码的主要功能就是把本地文件夹里的图片压缩质量(也就是大小)输出到另一个文件夹,但为了方便也可以原地输出(会覆盖掉原图片,谨慎)

# 导入Pillow库中的Image模块,用于处理图片
from PIL import Image
# 导入os模块,用于与操作系统交互,如读取文件列表
import os

# 定义一个函数,用于压缩图片
def compress_image(input_folder, output_folder, quality):
    # 遍历输入文件夹中的每个文件
    for filename in os.listdir(input_folder):
        # 检查文件是否是支持的图片格式
        # 使用lower()方法确保文件扩展名不区分大小写
        if filename.lower().endswith((".jpg", ".jpeg", ".png", ".bmp", ".gif", ".webp")):
            # 使用Image.open打开输入文件夹中的图片文件
            img = Image.open(os.path.join(input_folder, filename))
            # 获取文件扩展名
            extension = os.path.splitext(filename)[1].lower()
            # 根据文件类型决定是否使用quality参数
            if extension == ".gif":
                # 对于GIF格式,使用optimize=True来优化文件大小
                # 注意:这可能会将动画GIF转换为静态图像
                img.save(os.path.join(output_folder, filename), optimize=True)
            else:
                # 对于其他格式,保存图片到输出文件夹,并指定压缩质量
                # 使用optimize=True来进一步优化文件大小
                img.save(os.path.join(output_folder, filename), quality=quality, optimize=True)

# 设置输入文件夹的路径
input_folder = r"C:\Users\HML\Desktop\PictrueMaterial\雕塑"
# 设置输出文件夹的路径
output_folder = r"C:\Users\HML\Desktop\PictrueMaterial\雕塑"
# 设置压缩质量,这里设置为80
# Quality参数的取值范围是1到95,95表示最高质量
quality = 80

# 调用compress_image函数,传入输入文件夹路径、输出文件夹路径和压缩质量
compress_image(input_folder, output_folder, quality)

批量文件夹压缩(原地)

我发现如果图片分为很多文件夹,每个文件夹压缩都要修改代码路径太麻烦了

所以干脆给一个根路径,自动每个子文件夹路径作为输入输出文件夹,将所有子文件夹里的图片原地压缩(不希望原地覆盖别做)

​​from PIL import Image
import os

def compress_image_folder(folder_path, quality):
    # 遍历文件夹中的每个子文件夹
    for subdir, dirs, files in os.walk(folder_path):
        # 为每个子文件夹创建一个输出文件夹路径
        output_subdir = subdir
        # 遍历子文件夹中的每个文件
        for filename in files:
            # 检查文件是否是支持的图片格式
            if filename.lower().endswith((".jpg", ".jpeg", ".png", ".bmp", ".gif", ".webp")):
                # 构建完整的输入和输出文件路径
                input_file_path = os.path.join(subdir, filename)
                output_file_path = os.path.join(output_subdir, filename)
                # 打开并压缩图片
                img = Image.open(input_file_path)
                img.save(output_file_path, quality=quality)

# 设置包含子文件夹的根文件夹路径
root_folder = r"C:\Users\HML\Desktop\PictrueMaterial"
# 设置压缩质量,这里设置为80
quality = 50

# 调用compress_image_folder函数,传入根文件夹路径和压缩质量
compress_image_folder(root_folder, quality)

  • 9
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值