使用ImageMagick优化平铺tiff的大小

时间:2018-03-29 17:35:04

标签: image imagemagick jpeg tiff iipimage

我正在使用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 个答案:

答案 0 :(得分:2)

我以为我只是为@ 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。

答案 1 :(得分:1)

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

&#34; PalaisDuLouvre.tif&#34;图像为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相同的平铺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