当前位置: 首页 > news >正文

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

程序及源码下载地址:

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 -- 覆盖前是否备份源图片, 添加该参数则表示备份。

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

http://www.hskmm.com/?act=detail&tid=29625

相关文章:

  • ElasticSearch
  • 20232302 2025-2026-1《网络与系统攻防技术》实验一实验报告
  • 2023 ICPC ECfinal J
  • 嵌入式十六进制的地址转换成十进制MB单位
  • 20232318 2025-2026-1 《网络与系统攻防技术》 实验一实验报告
  • 实时Galgame - 动漫角色 语言生成+图片生成
  • 系统响应慢分析案例
  • Linux文件系统与磁盘工作原理
  • 平安好车主小程序 充电站、加油站列表vmp+wasm逆向
  • Linux文件系统的实验
  • 软中断softirq的CPU使用率升高
  • CPU多进程切换导致过载-CPU上下文切换
  • Vue3 之pinia状态管理
  • 乐理 -01识谱
  • shader func
  • 案例分析-DDOS攻击、网络延迟(延迟确认纳格算法)、NAT延迟
  • 服务器丢包分析-iptables规则-MTU大小设置错误-perf-火焰图分析处理请求时内核线程调用
  • luogu P4513 小白逛公园
  • 2025 年碟式离心机厂家 TOP 企业品牌推荐排行榜,DB640 系列 / DB330 系列 / DB440 系列 / DB460 系列 / DB550 系列 / 专业碟式离心机推荐这十家公司!
  • 20231408徐钰涵课程思维导图Openssl实践
  • 案例分析-DNS+tcpdump+wireshark
  • 2025 年卧式离心机厂家 TOP 企业品牌推荐排行榜,LW250/LW350/LW450/LW530/LW540 / 专业卧式离心机推荐这十家公司!
  • 2025 年水泥管厂家最新推荐排行榜,国标水泥管,二级水泥管,钢筋混凝土水泥管,大口径水泥管,平口水泥管公司推荐!
  • Day1 经典Holle word
  • 内存知识总结
  • 2025 年金属复合板厂家推荐广东粤洋建材科技有限公司,实力产能与定制服务全景解析金属复合板公司推荐
  • 2025 年铝蜂窝板厂家最新推荐排行榜,铝蜂窝板,铝蜂窝吊顶,铝蜂窝墙面板,微孔吸音板,防火A级铝复合板公司推荐
  • 读书笔记:关于Oracle里的“老古董”:LONG类型
  • 致技术社区的英雄们:一场关于文明未来的建造邀请
  • AI图片生成思路