ImageMagick을 사용하여 이미지를 자르면 모든 출력 파일(TIF)이 동일한 크기가 됩니까?

ImageMagick을 사용하여 이미지를 자르면 모든 출력 파일(TIF)이 동일한 크기가 됩니까?

저는 보관을 위해 희귀한 오래된 책(요리책)을 스캔하기 위해 Canon LiDE 110을 사용하고 있습니다. 스캔 결과는 .TIF파일이며 균일성을 위해 일괄적으로 자르고 싶습니다.

ImageMagick을 사용하여 일괄 자르기를 수행하는 방법은 다음과 같습니다.

mogrify -gravity North -crop 1600x2512+0+0 -type Palette -define tiff:rows-per-strip=16 -define tiff:subfiletype=PAGE *.tif

( 및 type같은 추가 명령줄 옵션은 속성을 원본 이미지와 동일하게 유지하는 데 사용됩니다.)rows-per-stripsubfiletype

또한 다음과 같이 각 파일을 한 번에 하나씩 자르려고 했습니다.

mogrify -gravity North -crop 1600x2512+0+0 -type Palette -define tiff:rows-per-strip=16 -define tiff:subfiletype=PAGE IMG_0003.tif

문제는결과(출력) 잘린 이미지는 모두 동일한 바이트 크기입니다! (정확히 말하면 모두 4,022,366바이트입니다.)

원본 이미지[1]:

$ identify *.tif

IMG_0002.tif TIFF 1660x2572 1660x2572+0+0 16-bit sRGB 256c 4.273MB 0.000u 0:00.000
IMG_0003.tif TIFF 1652x2556 1652x2556+0+0 16-bit sRGB 256c 4.226MB 0.000u 0:00.000
IMG_0004.tif TIFF 1656x2572 1656x2572+0+0 16-bit sRGB 256c 4.262MB 0.000u 0:00.000
IMG_0005.tif TIFF 1668x2604 1668x2604+0+0 16-bit sRGB 256c 4.347MB 0.000u 0:00.000
IMG_0006.tif TIFF 1680x2544 1680x2544+0+0 16-bit sRGB 256c 4.277MB 0.000u 0:00.000

이미지 자르기:

$ identify *.tif

IMG_0002.tif TIFF 1600x2512 1600x2512+30+0 16-bit sRGB 256c 4.022MB 0.000u 0:00.000
IMG_0003.tif TIFF 1600x2512 1600x2512+26+0 16-bit sRGB 256c 4.022MB 0.000u 0:00.000
IMG_0004.tif TIFF 1600x2512 1600x2512+28+0 16-bit sRGB 256c 4.022MB 0.000u 0:00.000
IMG_0005.tif TIFF 1600x2512 1600x2512+34+0 16-bit sRGB 256c 4.022MB 0.000u 0:00.000
IMG_0006.tif TIFF 1600x2512 1600x2512+40+0 16-bit sRGB 256c 4.022MB 0.000u 0:00.000

왜 이런 일이 발생합니까?


각주:

  1. 질문의 문제가 무엇인지 확인하기 위해 다음과 같이 임시로 원본 파일을 공개합니다.

    질문에 적절한 답변/해결책이 있으면 이 콘텐츠는 제거됩니다.삭제되었습니다.

답변1

mogrify명령은 이미지를 고정된 크기로 자릅니다. 그것은 또한모든 압축 제거JPEG 이미지 재압축 및 이미지 품질 저하를 방지하기 위해 주로 이미지에 표시됩니다. 또한 생성된 TIFF가 다음과 일치하는지 확인합니다.기준 형식.

결과적으로 스캔할 때마다 매우 유사한 크기의 파일이 생성됩니다.

x_pixels * y_pixels * bytes_per_pixel

귀하의 경우 고정 팔레트를 지정했기 때문에 x_pixels=1600, y_pixels=2512 및 bytes_per_pixel=1입니다. 메타데이터 및 팔레트 매핑을 고려하면 결과 파일 크기는 4,019,200바이트보다 약간 더 커집니다.

-rw-r--r--+ 1 roaima users 4225562 Dec 30 16:28 IMG_0003.tif    # Original
-rw-r--r--+ 1 roaima users 4022354 Jan  5 09:55 IMG_0003.tif    # Mogrified

메타데이터와 팔레트가 이론상 최소 크기보다 203,208바이트 더 큰 것을 확인할 수 있습니다.

이제연장 수량TIFF 형식은 다양한 유형의 압축을 허용하는 형식입니다. 이러한 압축 유형은 -compress {type}플래그를 통해 에 적용 할 수 있습니다 mogrify. 이러한 압축 유형 중 일부는 손실이 있고 다른 압축 유형은 무손실입니다. 무손실 옵션의 몇 가지 비교 크기는 다음과 같습니다.

-rw-r--r--+ 1 roaima users 4022354 Jan  5 10:02 IMG_0003.tif    # None
-rw-r--r--+ 1 roaima users 4022354 Jan  5 10:02 IMG_0003.tif    # BZip
-rw-r--r--+ 1 roaima users 446952 Jan  5 10:02 IMG_0003.tif     # LZW
-rw-r--r--+ 1 roaima users 594040 Jan  5 10:02 IMG_0003.tif     # RLE
-rw-r--r--+ 1 roaima users 429692 Jan  5 10:02 IMG_0003.tif     # Zip
-rw-r--r--+ 1 roaima users 478622 Jan  5 10:02 IMG_0003.tif     # LZMA

놀랍게도 BZip 압축은 실패하는 것 같습니다. 적어도 제 시스템에서는요. 하지만 제가 선호하는 검색 엔진을 통해 보고된 다른 사례는 찾을 수 없습니다.

최종 결과는 mogrify명령을 약간 수정하면 크기가 크게 줄어든 무손실 TIFF 파일을 얻게 된다는 것입니다.

mogrify -gravity North -crop 1600x2512+0+0 -type Palette \
-define tiff:rows-per-strip=16 -define tiff:subfiletype=PAGE -compress Zip *.tif

관련 정보