使用 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

(附加命令行选项,例如typerows-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}标志 to 来应用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

相关内容