尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Python 基于python实现的图片压缩助手

Python 基于python实现的图片压缩助手
📅 发布时间:2026/6/20 16:54:52

程序及源码下载地址:

https://gitee.com/ishouke/image-optimizer

图片压缩助手使用说明

适用环境

win11

imageOptimizer.zip

备注:win7可能存在兼容性问题,其它版本未验证

Centos7

imageOptimizer.tar

用途

批量压缩图片,开发时间有限,目前仅支持图片格式:.jpg, .jpeg, .png

使用方法

助手工具配置

image_optimizer.conf

[OPTIMIZER_CONF]
# ###### 通用配置 ######
# 压缩后的图片的存储路径 默认为当前目录下的 compressedImages目录
# 注意:如果指定了输出目录,会在该目录下,按文件所在路径,创建对应层级的目录结构,比如 output_dir设置为D:\testdir
# 检索到的文件在E:\somedir\subdir\target\file.png,那么压缩后的file.png位于 D:\testdir\somedir\subdir\target目录下# 注意:指定的输出目录不能是输入目录的子路径,否则会造成死循环(虽然代码已做判断),因为会在子目录下新建目录,导致遍历输入目录时,会无限遍历
output_dir =# 合法文件扩展名,如果有多个,英文逗号分隔
# 目前仅支持 .jpg, .jpeg, .png
valid_extensions = .jpg, .jpeg, .png# 最大线程数(默认: 本机cpu核数)
workers =# 是否遍历输入目录的子目录
# 1 -- 是  0 -- 否 默认为 0
traverse_sub_dir = 1# 是否支持正则识别待排除路径
# 1 -- 是  0 -- 否 默认为0
check_path_by_regex = 1# 输入文件名称是和源文件名保持一致
# 1 -- 是  0 -- 否 默认为 0  默认输出文件格式:源文件名(不带后缀)-compressed
# 注意:仅 override_src_image 不等于 1 该配置才有效
keep_name_unchanged = 0# 是否覆盖源图片
# 1 -- 覆盖 0 -- 不覆盖,默认为 0
# 注意:该配置项为1时,指定输出目录路径不起作用,即 output_dir 配置项不起作用
override_src_image = 0# 覆盖前是否备份源图片
# 1 -- 备份 0 -- 不备份,默认为 0 在文件所在目录下创建bak目录,然后拷贝源文件到该目录下
# 仅 override_src_image = 1 该配置才有效
backup_src_image = 1# 备份目录名称
backup_dir_name = bak# 过滤器--按大小过滤--文件大小大于等于该配置项的文件才压缩
# 单位KB,要求整数,默认为0
filter_file_size = 512###### 工具差异化配置 ######
# png压缩工具
# 可选值: pngquant  默认 pngquant(有损压缩)
png_comp_tool = pngquant# pngquant压缩命令模板
# 参数说明:
# -f | --force  强制覆盖已有的输出文件
# --skip-if-larger 仅在转换后的文件小于原始文件时保存
# --output {output_image_path} 指定输出图片路径
# --quality min-max 不保存低于最小值,高于最大值(0-100)时使用更少的颜色
# --speed N 表示速度与质量的权衡。1代表慢速,4代表默认速度,11代表快速且粗糙
# --nofs            禁用Floyd-Steinberg抖动算法
# --posterize N 输出低精度颜色(例如,用于ARGB4444输出)
# --strip 移除可选元数据(在Mac上默认为开启)
# 注意:{}为英文输入
pngquant_compress_cmd_template = {bin_tool} --force --skip-if-larger --speed 4 --output "{output_image_path}" "{input_image_path}"# jpg, jpeg 压缩工具
# 目前仅支持 cv2
jpg_comp_tool = cv2# jpg,jpeg cv2压缩配置
# 说明:
# -- 控制整体质量:数值越低,压缩率越高(文件越小),但画质损失越明显。 要求整数(0-100),默认值 95。适用所有 JPEG 压缩场景(核心参数)。
cv2_jpeg_quality = 42# 是否优化霍夫曼编码表(0=关闭,1=开启)
# 开启后可进一步减小文件体积(约 5-10%),但编码时间略增加。要求整数(0/1),默认值 1。适用需要更小文件体积时(推荐开启)
cv2_jpeg_optimize = 1# 是否生成渐进式 JPEG(0=基线 JPEG,1=渐进式)。渐进式 JPEG 加载时先显示模糊轮廓,再逐步清晰,适合网页。 要求整数(0/1),默认值 0。适用网页/移动端图片(需浏览器支持渐进式解码)。
cv2_jpeg_progressive =# 单独控制亮度(Luma)通道的质量。亮度对视觉影响更大,可优先降低此值以压缩。要求整数(0-100),无默认值。适用灰度图或颜色简单的图像(如监控截图)。
# 注意:配置该参数,该参数值越大,图片体积越大
cv2_jpeg_luma_quality =#单独控制色度(Chroma)通道的质量。色度对视觉敏感度较低,可大幅降低此值。要求整数(0-100),无默认值。适用颜色变化少的图像(如风景照、卡通图)。
cv2_jpeg_chroma_quality =

输入图片路径配置

待压缩图片所在目录路径

conf/image_path_included.conf

# 需要检索的路径,每行代表一个路径
# # 代表注释,空行或者注释会自动过滤
# 示例:D:\test、/opt/data/images

待排除图片路径配置

不需要压缩的图片所在目录路径、不需要压缩的图片文件路径

conf/image_path_excluded.conf

# 需要排除的路径,每行代表一个路径
# # 代表注释,空行或者注释会自动过滤
# 注意,配置支持目录、文件路径
# 示例:bak$ -- 以bak结尾的路径都排除

日志配置

一般不用改

conf/log.conf

[LOGGING]
log_file =
max_bytes_each = 512000
backup_count = 10
fmt = |(asctime)s |(filename)s[line: |(lineno)d] |(levelname)s: |(message)s
logger_name = test_logger
log_level_in_console = 10
log_level_in_logfile = 20
console_log_on = 1
logfile_log_on = 1[README]
log_level = '日志级别:CRITICAL = 50 ERROR = 40 WARNING = 30 INFO = 20 DEBUG = 10 NOTSET = 0'
log_on = 'console_log_on  = 1 开启控制台日志,0则关闭,logfile_log_on = 1 开启文件日志, 0则关闭'
log_file = 'log.txt所在的目录必须已存在'

运行

windows

cd imageOptimizer
imageOptimizer.exe

linux

# chmod +x bin_tools/pngquant
# ./imageOptimizer

命令行参数

工具支持部分命令行参数,例如以下:

./imageOptimizer --input_dir=/root/testdir --output_dir=/root/mydir

参数介绍:

  • --input_dir=image_dir_paths -- 待压缩图片所在目录路径,如果有多个采用英文逗号分隔(默认: inputImages)
  • --output_dir=image_dir_paths -- 压缩后图片存储目录路径(默认: compressedImages)
  • --workers=Num -- 最大线程数(默认: 本机cpu核数)
  • --png_comp_tool=tool -- png图片压缩工具, 默认pngquant
  • --jpg_comp_tool=tool -- jpg/jpeg图片压缩工具, 默认cv2
  • --traverse_sub_dir -- 是否遍历输入目录的子目录, 添加该参数,则表示遍历子目录
  • --check_path_by_regex -- 是否支持正则识别待排除路径。添加该参数则表示支持正则识别。
  • --override_src_image -- 是否覆盖源图片,添加该参数则表示覆盖。
  • --backup_src_image -- 覆盖前是否备份源图片, 添加该参数则表示备份。

注意:如果配置了命令行参数则以命令行参数为准,否则读取助手工具配置文件中对应参数配置

作者:授客
微信/QQ:1033553122
全国软件测试QQ交流群:7156436

Git地址:https://gitee.com/ishouke
友情提示:限于时间仓促,文中可能存在错误,欢迎指正、评论!
作者五行缺钱,如果觉得文章对您有帮助,请扫描下边的二维码打赏作者,金额随意,您的支持将是我继续创作的源动力,打赏后如有任何疑问,请联系我!!!
           微信打赏                       支付宝打赏                  全国软件测试交流QQ群  
             

相关新闻

  • 嵌入式十六进制的地址转换成十进制MB单位
  • 编译qt【临时】
  • 20232318 2025-2026-1 《网络与系统攻防技术》 实验一实验报告

最新新闻

  • 海南怎么登报挂失?2026最新流程避坑指南 - 资讯速览
  • 2026南宁奢侈品回收行业白皮书:出手名贵腕表怕信息泄露,私密交易一对一全程保护隐私 - 讯息早知道
  • 2026 杭州威能地暖服务商全面测评!6 家企业实力拆解,家装采购不踩雷 - 资讯速览
  • ArcReel项目架构演进:从单体应用到多智能体协作系统的10个关键设计思考
  • StardewXnbHack终极指南:3步解锁《星露谷物语》全部游戏资源
  • 2026 年济南市厨卫屋顶防水修缮三家横向测评:吉修匠 99.8 分稳居榜首 - 吉修匠

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号