'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
左端)は、original.jpgを明るい灰色の背景画像として使用して、色の値が異なるピクセルを赤でペイントします。
2番目の画像(delta2.jpg
左から2番目)は、色の異なる赤のピクセルのみをペイントし、白のピクセルと同じ色の値をペイントします。
3番目の画像(右から2番目)は元のJPEGです。4番目(右端)は「変更されていない」サムネイルです(実際には、一部のピクセルに微妙な変更が加えられています)。
わずかな色の変化の理由を調査する時間は今のところありませんが(頭のてっぺんから理由を説明することはできません)、後でこのトピックに戻る可能性があります。