ImageMagick调整大小:对于“Only Shrink Larger”案例真的没什么

时间:2012-09-19 21:09:35

标签: imagemagick imagemagick-convert

原始图片: http://www.tiaoyue.com/img/_test/original.jpg (2,457字节)

尝试通过ImageMagick获取缩略图:

convert \
   http://www.tiaoyue.com/img/_test/original.jpg \
  -thumbnail 200x200\> \
   SecondaryCompression.jpg

或者在Windows中:

convert ^
   http://www.tiaoyue.com/img/_test/original.jpg ^
  -thumbnail 200x200^> ^
   SecondaryCompression.jpg

获取文件: SecondaryCompression.jpg (2,452字节)

我可以在没有二次压缩的情况下获取目标文件(SecondaryCompression.jpg),只能复制原始图像吗? (图像的 2,457字节

参考:

1 个答案:

答案 0 :(得分:2)

“转换”命令的实际问题是 ,文件在您调用时会经历“二次压缩”。

真正的问题是,某些像素的颜色值变化非常小(这反过来确实会使整个文件的压缩效果更好,甚至可能更差)。

因此,您应该先研究如何防止颜色变化!

要记录+验证每个像素的颜色变化,请运行以下命令:

convert  http://www.tiaoyue.com/img/_test/original.jpg  original.txt
convert  SecondaryCompression.jpg                       SecondaryCompression.txt
sdiff -sbB  SecondaryCompression.txt  original.txt

提示: convert的TXT输出格式是每个像素的坐标位置及其相应颜色值的文本表示(这些值以3种不同的方式给出:十进制RGB (或CMYK)值,十六进制RGB(或CMYK)值,人类可读的颜色名称(如果可能)。如果您看到格式一次,您将立即理解它。

可以确定总共1415个像素已经改变了颜色值,总共7500个像素。这是18.86%的像素变化。

要为像素差异创建可视化表示,请运行:

compare  original.jpg  SecondaryCompression.jpg                delta1.jpg
compare  original.jpg  SecondaryCompression.jpg  -compose src  delta2.jpg

delta1.jpg delta2.jpg original.jpg SecondaryCompression.jpg

第一张图片(delta1.jpg,最左边)使用original.jpg作为浅灰色背景图片,绘制具有不同颜色值的红色像素。

第二张图片(delta2.jpg,左起第二张)仅绘制红色的不同颜色的像素,并将相同的颜色值绘制为白色像素。

第三张图片(右起第二张)是原始JPEG。第四个(最右边)是你的“未改变的”缩略图(实际上对某些像素有一些细微的变化)。

我现在没时间调查颜色发生轻微变化的原因(并且无法从我的头脑中找出原因),但可能会在稍后回到此主题。