jpegtran - 画像の左側の部分を失うことなく切り捨てます。

jpegtran - 画像の左側の部分を失うことなく切り捨てます。

正方形の比率を維持するために、左に4ピクセル、下に1ピクセル、上から3ピクセルを切り取る1400×1400の画像があります。問題は、を使用して切り取るたびjpegtranに何をしても、右下隅からピクセルが削除されることです。たとえば、左側の部分のみをテストするには、次のようにします。

jpegtran -perfect -crop 1396x1400+0+0 -outfile crop.jpg image.jpg

ただし、これにより右から4ピクセルだけが削除されます。

jpegtran -perfect -crop 1396x1400-4+0 -outfile crop.jpg image.jpg

もう一度右から4ピクセルを削除します。

jpegtran -perfect -crop 1396x1400+4+0 -outfile crop.jpg image.jpg

通常、ピクセルはまったく削除されません。

jpegtran -perfect -crop 1396x1400+x+0 -outfile crop.jpg image.jpg

jpegtran -perfect -crop 1396x1400-x+0 -outfile crop.jpg image.jpg

0と4の間で、x右からそれぞれ4-xとxピクセルを削除します。 5以上では、明らかにx何かが間違っているでしょう。左トリミングはできません。誰が私を助けることができますか?

jpegtran私はlibjpeg-turboArch Linux x86_64システムでバージョン1.4.2(ビルド20151205)を使用しています。

ベストアンサー1

jpegtran比較できない最小コーディング単位チャンネルとチャンネルによってサイズが異なります。クロマサンプリングモード。 8×8、16×8、または16×16になります。

これは、画像符号化方法に応じて、最小カットサイズが8または16の偶数倍数でなければならないことを意味する。右端と下端を除い​​て、画像サイズが8または16ピクセルの偶数倍ではない場合。この場合、右端および/または下端に部分ブロックがあります。たとえば、17×17ピクセルの画像は、右端または下端から1ピクセルだけ切り取ることができますが、その端から2ピクセル、上端と左端から1ピクセルだけ切り取ることはできません。

他の作業では、切断されたブロックを記録する必要があります。

マニュアル引用:

...ロスレスカットは現在JPEG形式に制限されています。選択した領域の左上隅がiMCU境界になければなりません。指定されたトリミングパラメータにこれが適用されない場合は、これを達成するために左上隅を静かに上下左右に移動し、同時に右下トリミング角度を変更せずに維持するためにゾーンサイズを増やします。 (したがって、出力画像には少なくとも要求された領域が含まれますが、より多くの領域を含めることもできます。)

おすすめ記事