Image-Manipulation
jpegtran - 無損裁剪圖像的左側部分
我有一個 1400x1400 的圖像,我想在其中向左修剪 4 個像素,在底部修剪 1 個像素,為了保持正方形比例,從頂部修剪 3 個像素。問題是,每當我使用 進行裁剪時
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和
x
4 之間,分別從右側移除 4-x 和 x 像素。x
高於 5,顯然會報錯。我無法實現任何左修剪。誰能幫我?我在 Arch Linux x86_64 系統上使用
jpegtran
1.4.2libjpeg-turbo
版(內部版本 20151205)。
jpegtran
不能以比最小編碼單元大小更精細的增量進行無損切割,這取決於通道和色度採樣模式。它將是 8×8、16×8 或 16×16。這意味著最小剪切尺寸必須是 8 或 16 的偶數倍,具體取決於圖像的編碼方式。當圖像尺寸不是 8 或 16 像素的偶數倍時,右側和底部邊緣除外。在這種情況下,您在右側和/或底部邊緣有部分塊。例如,一個 17×17 像素的圖像可以從其右側或底部邊緣切割 1px,但不能從這些邊緣切割 2px,也不能從頂部和左側邊緣切割 1px。
其他任何事情都需要對剪切塊進行重新編碼。
引用手冊:
…無損裁剪受目前 JPEG 格式的限制:所選區域的左上角必須落在 iMCU 邊界上。如果這對於給定的裁剪參數不成立,我們默默地向上和/或向左移動左上角以使其如此,同時增加區域尺寸以保持右下角裁剪不變。(因此,輸出圖像至少覆蓋了請求的區域,但可能覆蓋更多。)