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

また、次のように各ファイルを一度に1つずつ切り取ろうとしました。

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

関連情報