首页 文章

使用ImageMagick优化平铺tiff的大小

提问于
浏览
1

我正在使用ImageMagick从jpeg文件创建Tiled TIFF . 我的目标是使用IIPImage服务器 . 我可以轻松生成文件但我的问题是我必须处理大型图像仓库,并且优化我的TIFF文件占用的空间至关重要 .

因此,通过使用45%的压缩(以及256x256的瓦片),我获得了可接受的质量,这是我所知道的最高优化级别 . 使用该配置,我的TIFF文件与原始jpeg文件的大小相同 . 例如,如果jpeg的权重为10Mo,则结果TIFF的权重为11.4Mo . 这很好但不是因为如果我的初始仓库重量为2,我必须为我的项目计划至少4To .

因此,我想知道是否存在一种方法来进一步优化我的TIFF文件的大小,而不会失去超过45%的质量...通过使用ImageMagick或其他工具 .

有关信息,我正在使用此命令生成TIFF .

convert <jpeg file> -quality 45 -depth 8 +profile '*' -define tiff:tile-geometry=256x256 -compress jpeg 'ptif:<tiff file>'

谢谢 !

2 回答

  • 1

    我想我只是给@ mark-setchell的优秀答案添加了一个注释,但是它出来的时间太长了,所以我已经单独制作了一个,对不起 .

    你的问题是imagemagick(至少在当前的Ubuntu上)将金字塔形的JPEG TIFF保存为RGB而不是YCbCr,因此它们非常庞大 . 例如, wtc.jpg 是使用默认Q75保存的10,000 x 10,000像素JPEG图像:

    $ time convert wtc.jpg -quality 45 -depth 8 +profile '*' -define tiff:tile-geometry=256x256 -compress jpeg 'ptif:x-convert.tif'
    real    0m27.553s
    user    1m10.903s
    sys 0m1.129s
    $ ls -l wtc.jpg x-convert.tif 
    -rw-r--r-- 1 john john 15150881 Mar 16 08:55 wtc.jpg
    -rw-r--r-- 1 john john 37346722 Mar 30 20:17 x-convert.tif
    

    你可以看到这样的压缩类型:

    $ tiffinfo x-convert.tif | grep -i interp
      Photometric Interpretation: RGB color
    

    也许有一些方法可以让它使用YCbCr代替?不幸的是,我不确定如何 .

    我会改用libvips . 它的速度提高了10倍以上(无论如何都在这台笔记本电脑上),使用的内存更少,而且它能正确启用YCbCr模式,因此您可以获得更小的文件:

    $ time vips tiffsave wtc.jpg x-vips.tif --compression=jpeg --tile --tile-width=256 --tile-height=256 --pyramid
    real    0m2.180s
    user    0m2.595s
    sys 0m0.082s
    $ ls -l x-vips.tif 
    -rw-r--r-- 1 john john 21188074 Mar 30 20:27 x-vips.tif
    $ tiffinfo x-vips.tif | grep -i interp
      Photometric Interpretation: YCbCr
    

    如果将Q设置为较低,则可以将尺寸调低:

    $ vips tiffsave wtc.jpg x-vips.tif --compression=jpeg --tile --tile-width=256 --tile-height=256 --pyramid --Q 45
    $ ls -l x-vips.tif 
    -rw-r--r-- 1 john john 12664900 Mar 30 22:01 x-vips.tif
    

    虽然我自己坚持默认的Q75 .

  • 2

    我不熟悉IIPImage服务器,所以我的想法可能不合适 . 如果存储平铺的TIFF,则存储多个分辨率,但除了最高分辨率之外的所有分辨率都是多余的 - 那么您是否可以存储最高分辨率并根据需要生成较低分辨率?

    “PalaisDuLouvre.tif”图像为2MB作为平铺TIF:

    ls -lhr PalaisDuLouvre.tif 
    -rw-r--r--@ 1 mark  staff   1.9M 30 Mar 11:24 PalaisDuLouvre.tif
    

    它包含6种不同分辨率的相同图像:

    identify PalaisDuLouvre.tif
    PalaisDuLouvre.tif[0] TIFF 4000x828 4000x828+0+0 8-bit sRGB 1.88014MiB 0.000u 0:00.000
    PalaisDuLouvre.tif[1] TIFF 2000x414 2000x414+0+0 8-bit sRGB 1.88014MiB 0.000u 0:00.000
    PalaisDuLouvre.tif[2] TIFF 1000x207 1000x207+0+0 8-bit sRGB 1.88014MiB 0.000u 0:00.000
    PalaisDuLouvre.tif[3] TIFF 500x103 500x103+0+0 8-bit sRGB 1.88014MiB 0.000u 0:00.000
    PalaisDuLouvre.tif[4] TIFF 250x51 250x51+0+0 8-bit sRGB 1.88014MiB 0.000u 0:00.000
    PalaisDuLouvre.tif[5] TIFF 125x25 125x25+0+0 8-bit sRGB 1.88014MiB 0.000u 0:00.000
    

    然而,我可以将它存储在比你平铺的TIFF更好的质量(90%),如下所示:

    convert PalaisDuLouvre.tif[0] -quality 90 fullsize.jpg
    

    尺寸为554kB:

    -rw-r--r--   1 mark  staff   554K 30 Mar 13:44 fullsize.jpg
    

    并根据需要在1秒内生成与您的相同的平铺TIF:

    convert fullsize.jpg -define tiff:tile-geometry=256x256 -compress jpeg ptif:tiled.tif
    

    或者,您可以使用 vips 使您的TIFF金字塔更快 . 以下我的iMac需要0.2秒,比 ImageMagick 快近5倍:

    vips tiffsave fullsize.jpg vips.tif --compression=jpeg --Q=45 --tile --tile-width=256 --tile-height=256 --pyramid
    

相关问题