首页 > 编程语言 >批量压缩文件夹里的图片(python)

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

时间:2024-04-11 12:59:27浏览次数:27  
标签:批量 python quality filename 文件夹 input folder os

起源是我收藏了很多照片,但是太大的照片不利于分享使用,而且我并不需要那么高清晰度,通过在线压缩工具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)

标签:批量,python,quality,filename,文件夹,input,folder,os
From: https://blog.csdn.net/graphyer/article/details/137634542

相关文章

  • Python基础语法
    1.常用数据类型2.注释单行注释#需要注释的内容多行注释"""需要注释的内容"""3.变量定义变量名=变量值type()查看数据类型type(需查看类型的数据)4.类型转换类型转换代码int(x)#将x转换成整型float(x)#将x转换成浮点型str(x)#将x转换成字......
  • 【python】python根据传入参数不同,调用不同的方法
    大家好,我是木头左。今天介绍三种不同方法实现根据传入参数不同,调用不同的方法。使用条件语句在Python中,可以使用条件语句(如if-elif-else语句)来根据传入的参数调用不同的方法。以下是一个示例:defmethod1():print("调用方法1")defmethod2():print("调用方法2")d......
  • 【华为OD】2024年华为OD机试C卷真题集:最新的真题集题库 C/C++/Java/python/JavaScript
    【华为OD】2024年C卷真题集:最新的真题集题库C/C++/Java/python/JavaScript【华为OD】2024年C卷真题集:最新的真题集题库C/C++/Java/python/JavaScript-CSDN博客华为OD机试2024年C卷真题题集题库,有2种分数的题目列表,分别是100分的列表、200分的列表需要订阅请看链接:C卷100......
  • 【python基本用法】python的相对引用
    要使用__init__.py将mouse_move作为一个包,可以按照以下步骤操作:在包含mouse_move模块的目录中创建一个空的__init__.py文件。这将使Python将该目录视为一个包。在__init__.py文件中,导入mouse_move模块,并将其添加到包中。例如,可以使用以下代码:frommouse_moveimportmouse_mo......
  • 千万不要将centos中python 默认2.7的编译器改为3.x的,会出现File “ usr bin yum“, li
    千万不要将centos中python默认2.7的编译器改为3.x的,在使用yum时,会报各种错,1、File"/usr/bin/yum",line30  exceptKeyboardInterrupt,e:原因是yum按python3.6解析2.7的语法出错了修改/usr/bin/yum文件中的第一行为#!/usr/bin/python2.72、 File"/usr/libexec/url......
  • Python面试50题!面试巩固必看!【转】
    题目001:在Python中如何实现单例模式。点评:单例模式是指让一个类只能创建出唯一的实例,这个题目在面试中出现的频率极高,因为它考察的不仅仅是单例模式,更是对Python语言到底掌握到何种程度,建议大家用装饰器和元类这两种方式来实现单例模式,因为这两种方式的通用性最强,而且也可以顺便......
  • centos修改文件夹时间
    1、设置系统时间(能影响changetime)date -s "2010-10-10 10:10:10" 2、修改文件时间#当前目录下文件/文件夹(不能递归):touch -m -d "2010-10-10 10:10:10" *#递归修改当前目录下所有文件/文件夹3个时间戳(Access、Modify、Changetime):find ./ * -exec touch {} ......
  • 基于python数据爬取和可视化
    系统介绍本系统介绍了一个基于基于Python的电影数据爬取和可视化技术的研究和方案设计,采用Python语言和Django架构构建。通过网络爬虫爬取豆瓣电影评论数据,利用数据清洗和处理技术,建立了一个全面的电影信息数据库。使用Python中强大的数据处理库进行统计分析,常见的一些库panda......
  • python-API开发zk客户端
    前面于超老师讲完了,zk运维的基本命令行玩法,更多的还是开发需要通过代码和zk结合处理。大多数场景是java后端去操作。这里我们以运维更友好的python来学习。1.kazoo模块zookeeper是一个用于维护配置信息、命名、提供分布式同步和提供组服务。它自身是高可用的,只要宕机节点不......
  • 批量修改字段字符集和表表字符集,sql生成
    表字符集修改SELECTCONCAT('ALTERTABLE',TABLE_NAME,'CONVERTTOCHARACTERSETutf8mb4;')FROMinformation_schema.TABLESWHERETABLE_SCHEMA='dataBaseName';表字段字符集修改SELECTCON......