我目前正在使用mogrify -strip image.jpg
从图像中删除不需要的字节,有人建议我可以使用jpegran
from删除更多数据libjpeg
,例如:
jpegtran -copy none -optimize -outfile image.jpg image.jpg
我遇到的问题(如果它是个问题的话)是,它jpegtran
似乎并没有真正做 mogrify 尚未做的事情。在我所有的测试中,文件大小都保持不变。如果我删除代码中的 mogrify 部分并替换为,jpegtran
那么它似乎可以执行相同的功能。
例如:
- 未压缩的图像:300k
mogrify -strip
带+ 的图片jpegtran
:272k- 图像
mogrify -strip
仅:272k - 图像
jpegtran
仅:272k
不过,我的印象是,它mogrify
只是删除了图片配置文件/评论,并且jpegtran
无损压缩了图片,使其变小。我是不是漏掉了什么?
答案1
维基百科说它jpegtran
“优化了霍夫曼编码层”,删除了额外的应用程序特定数据(什么mogrify -strip
作用),并在渐进式和非渐进式 jpeg 格式之间进行转换。它还能够裁剪、旋转/翻转和转换为灰度,而无需解压缩和重新压缩图像。
我推测,如果霍夫曼编码层已经处于最佳状态,那么 jpegtran 就无法做得更好了。