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バイト

参照:

4

1 に答える 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

ヒント:のTXT出力形式convertは、各ピクセルの座標位置とそれぞれの色の値をテキストで表したものです(これらの値は、10進数のRGB(またはCMYK)値、16進数のRGB(またはCMYK)値、人間の3つの異なる方法で与えられます)。読み取り可能なカラー名(可能な場合)。フォーマットを一度見れば、すぐに理解できます。

合計7500ピクセルのうち、合計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を明るい灰色の背景画像として使用して、色の値が異なるピクセルを赤でペイントします。

2番目の画像(delta2.jpg左から2番目)は、色の異なる赤のピクセルのみをペイントし、白のピクセルと同じ色の値をペイントします。

3番目の画像(右から2番目)は元のJPEGです。4番目(右端)は「変更されていない」サムネイルです(実際には、一部のピクセルに微妙な変更が加えられています)。

わずかな色の変化の理由を調査する時間は今のところありませんが(頭のてっぺんから理由を説明することはできません)、後でこのトピックに戻る可能性があります。

于 2012-09-20T21:39:32.180 に答える