用 minimagick 来压图,主要靠strip
和quality
来减小图片占用空间,不过最近发现个奇怪的问题:
在 centOS 机器上装了 imagemagick 后,压缩完的图有时会比原图大,于是用问题图片,经过各种注释代码,发现是经过strip
后图片会变的略大一点,然后使用系统命令直接操作图片
convert -strip image.jpg new_image.jpg
发现 new_image.jpg 比 image.jpg 要大一点。(奇怪,在 mac 上同样的文件同样操作却都是正常的)
查了很多 imagemagick 相关的资料,只说明 strip
是用来去除图片 EXIF 信息,这么说的话去除之后怎么着也不应该变大了啊,在SO 上提问了暂时还没人回,也没搜索到类似的问题,不知道有人知道这到底是怎么回事么?如果能解决的话顺便一块都答了把 实在不行只能把 strip 操作去掉了。
imagemagick 对 jpeg 格式所有操作都是会重新压缩的,如果照片本身带的 meta 信息很少或者没有,然后照片本身用的压缩表和 imagemagick 不一样(比如是相机和手机拍摄),是有可能会导致 strip 以后的尺寸会稍微变大。
以前遇到过这个问题,用这个照片为例子,strip 以前是 458365
strip 以后,变成了 468814,反而变大了 10K 左右
肉眼看不出来有什么区别,但是如果你生成 2 者的区别图 compare 3347.jpg 3347-strip.jpg diff.jpg
会发现边缘是有差异的
#1 楼 @quakewang 之前发现 quality 有这个问题,设置 quality 如果大于图片本身的 quality 值压缩,图片竟然会变大的,类似原图压缩而不是按照百分比继续压缩,照这么说的话还真是用软件做出来的图 strip 后偶尔会有这现象,汗啊,找了好多资料来回的问也没有结果,有么有解释详细点的资料么?
#1 楼 @quakewang 为什么 strip 后会改变图片质量呢?EXIF 会影响图片的显示效果么?测了几组图片,strip 后会有很多线条处标记不一致,但放大到像素好像没有区别呢(用的 BC?)
妈妈再也不用担心我玩找茬了~ 附上工具的下载链接 http://www.imagemagick.org/script/binary-releases.php#macosx