LibVIPS在处理3.9gb tiff图像时崩溃

时间:2015-10-26 23:53:41

标签: image-processing tiff libtiff vips

我目前正在开展一个项目,我的图像大约为3.9gb。我想通过执行以下命令为这个图像(这是LibVIPS可以生成的东西)创建一个谷歌地图:

vips-dev-8.1.1\bin\vips.exe dzsave testje-131072.tiff mydz

但是,在执行此操作时会显示一些警告,然后程序崩溃:

vips warning: tiff2vips: no resolution information for TIFF image "testje-131072.tiff" -- defaulting to 1 pixel per mm
vips warning: tiff2vips: no resolution information for TIFF image "testje-131072.tiff" -- defaulting to 1 pixel per mm
vips warning: vips_tracked: out of memory --- size == 48MB

Crash

任何人都知道如何使用Vips处理这种尺寸的图像? (或任何其他图书馆?)。

我自己做了一些调查,似乎我们需要BigTiff,我查看了VIPS源代码并看到了BigTiff一词被使用多次,所以我认为应该支持它?

Some information about the image:
Width: 131072
Height: 131072
Chunks: 32x32 (4096x4096 each)
Compression: LZW

在VLIV(超大图像查看器)等工具中打开图像时,图像打开正常。

1 个答案:

答案 0 :(得分:4)

我是libvips维护者。 vips.exe二进制文件包括bigtiff支持,应该可以轻松处理这种大小的图像。在Windows上构建自己很有挑战,也许是一个星期的工作,除非你非常专业,否则我不会尝试自己制作。

我认为问题可能是你的输入图像。我认为它使用非常大的瓷砖(4096 x 4096)。 libvips必须在内存中保留两行完整的图块,所以4096 x 131072 x 3 x 2像素,直接3GB。

我会重拍你的源图像。使用较小的图块,可能是512 x 512,并确保您正在编写一个bigtiff图像。如果您仍然遇到问题,请在libvips跟踪器上打开一个问题,在那里调试东西会更容易。

https://github.com/jcupitt/libvips/issues

编辑:现在有一个官方的64位Windows版本的libvips和vips.exe,它可能会有所帮助:

http://www.vips.ecs.soton.ac.uk/supported/current/win32/vips-dev-w64-8.1.1-2.zip