处理 3.9gb tiff 图像时 LibVIPS 崩溃

LibVIPS crashing when processing 3.9gb tiff image

我目前正在做一个项目,我有一张大约 3.9gb 的图像。我想通过执行以下命令为此图像创建一个 google 类似视图的地图(这是 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

有人知道我可以做什么才能使用 Vips 处理这种尺寸的图像吗? (或任何其他图书馆?)。

我自己做了一些调查,看来我们需要 BigTiff,我查看了 VIPS 源代码,看到术语 BigTiff 被多次使用,所以我想它应该得到支持?

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

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

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

我认为问题可能出在您的输入图像上。我认为它使用的是非常大的图块 (4096 x 4096)。 libvips 必须在内存中保留两行完整的图块,因此 4096 x 131072 x 3 x 2 像素,即 3GB。

我会重新制作您的源图像。使用较小的图块,也许是 512 x 512,并确保您正在编写大图。如果您仍然有问题,请在 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