3

原图: http ://www.tiaoyue.com/img/_test/original.jpg(2457字节)

尝试通过 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 字节

参考:

4

1 回答 1

2

您的“转换”命令的真正问题不是文件经历了您所说的“二次压缩”。

真正的问题是,一些像素的颜色值变化非常轻微(这反过来确实可以为整个文件带来更好甚至更糟的压缩结果)。

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

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

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

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

可以确定,在总共 7500 个像素中,总共有 1415 个像素改变了颜色值。那是 18.86% 的像素发生了变化。

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

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

delta1.jpg    delta2.jpg    原创.jpg    二次压缩.jpg

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

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

第三张图片(右二)是您的原始 JPEG。第四个(最右边)是您的“未更改”缩略图(实际上对某些像素进行了一些细微的更改)。

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

于 2012-09-20T21:39:32.180 回答