jpegtran - 이미지의 왼쪽 부분을 손실 없이 자릅니다.

jpegtran - 이미지의 왼쪽 부분을 손실 없이 자릅니다.

정사각형 비율을 유지하기 위해 왼쪽으로 4픽셀, 아래쪽으로 1픽셀, 위쪽에서 3픽셀을 자르려는 1400x1400 이미지가 있습니다. 문제는 를 사용하여 자를 때 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픽셀의 짝수 배수가 아닌 경우. 이 경우 오른쪽 및/또는 아래쪽 가장자리에 부분 블록이 있습니다. 예를 들어, 17x17픽셀 이미지는 오른쪽이나 아래쪽 가장자리에서 1픽셀만큼 잘릴 수 있지만 해당 가장자리에서 2픽셀만큼, 위쪽 및 왼쪽 가장자리에서 1픽셀만큼 잘릴 수는 없습니다.

다른 작업에서는 절단된 블록을 기록해야 합니다.

매뉴얼 인용 :

...무손실 자르기는 현재 JPEG 형식으로 제한됩니다. 선택한 영역의 왼쪽 상단 모서리가 iMCU 경계에 있어야 합니다. 지정된 자르기 매개변수에 대해 이것이 적용되지 않는 경우 이를 달성하기 위해 왼쪽 상단 모서리를 조용히 위쪽 및/또는 왼쪽으로 이동하는 동시에 오른쪽 하단 자르기 각도를 변경하지 않고 유지하기 위해 영역 크기를 늘립니다. (따라서 출력 이미지는 최소한 요청된 영역을 포함하지만 더 많은 영역을 포함할 수도 있습니다.)

답변2

누구든지 이러한 상황에 직면하여 16픽셀의 배수로 클리핑하려는 경우 모든 측면에서 16픽셀을 클리핑하는 형식은 다음과 같습니다.

jpegtran -perfect -crop 1368x1368+16+16 -outfile crop.jpg image.jpg

관련 정보