使用 ImageMagick 裁剪圖像會導致所有輸出文件 (TIF) 大小相同?
我正在使用我的佳能 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-strip
和subfiletype
用於保持與原始圖像相同的屬性。)我也嘗試過像這樣一次裁剪每個文件:
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 字節。)
原始圖像
[Math Processing Error]$$ 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
為什麼會發生這種情況?
腳註:
- 為了確定問題中的問題(如果有),我暫時將原始文件公開,在這裡:
該
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