ImageMagick大小调整:在“只缩小较大图像”情况下,是否真的不做任何操作?

3

原始图片: 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个回答

2

你“convert”命令的真正问题并不是像你所说的那样进行了“二次压缩”。

真正的问题在于,一些像素的颜色值会发生微小的变化(这反过来可能会导致整个文件的压缩结果更好或更差)。

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

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

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 个像素的颜色值发生了变化,占总像素数的 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图片。第四张图片(最右边的)是您的“未经改动”的缩略图(实际上对某些像素进行了微小的更改)。

我现在没有时间调查轻微颜色变化的原因(也无法立即给出解释),但可能稍后会回到这个话题。


我不明白这个回答如何解决问题,它只是问题的更详细描述。@Zenofo,你最终采取了什么解决方案? - ændrük
@ændrük 我判断原始图像的宽度,如果小于200像素则跳过。 - Koerr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接