如何使用ImageMagick对子目录所有图片无损压缩并转换为JPEG 2000
解决方案
你当前使用的mogrify(ImageMagick工具集组件)本身就支持JPEG 2000格式转换,只需要补充无损压缩参数和格式指定参数即可实现需求,修正后的可运行命令如下:
find ./static/assets/images -name '*.png' -print0 | xargs -0 mogrify -strip -define jp2:lossless=true -format jp2
参数解释
find ./static/assets/images -name '*.png' -print0:递归遍历目标目录下所有后缀为.png的文件,-print0参数用空字符分隔文件路径,兼容带空格、特殊字符的文件名xargs -0:接收find输出的路径,避免特殊路径解析错误mogrify相关参数:-strip:保留你原有的需求,移除图片EXIF、ICC配置文件等元数据,减少文件体积-define jp2:lossless=true:开启JPEG 2000的无损压缩模式,保证转换后画质无任何损失-format jp2:指定输出格式为JPEG 2000,转换完成后会生成后缀为.jp2的新文件,原png文件不会被修改
注意事项
- 运行命令前先确认你的ImageMagick已支持JP2格式,可执行
identify -list format | grep JP2验证,无输出的话先安装对应依赖:- Debian/Ubuntu 系:
sudo apt install imagemagick libopenjp2-7 - CentOS/RHEL 系:
sudo dnf install imagemagick openjpeg2
- Debian/Ubuntu 系:
- 建议先选取少量测试文件验证转换效果,确认符合预期后再全量运行
- 如果你不需要保留原png文件,可在转换完成后执行
find ./static/assets/images -name '*.png' -delete批量删除源文件,操作前建议做好文件备份
内容的提问来源于stack exchange,提问作者mahdi1dev
相关产品推荐
相关产品推荐

