【发布时间】:2015-10-26 23:53:40
【问题描述】:
我目前正在做一个项目,我的图像大小约为 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
有人知道我可以做些什么来使用 Vips 处理这种尺寸的图像吗? (或任何其他库?)。
我自己做了一些调查,似乎我们需要 BigTiff,我查看了 VIPS 源代码并看到 BigTiff 一词被多次使用,所以我认为应该支持它?
Some information about the image:
Width: 131072
Height: 131072
Chunks: 32x32 (4096x4096 each)
Compression: LZW
在 VLIV(超大图像查看器)等工具中打开图像时,图像可以正常打开。
【问题讨论】:
-
你有多少内存?这是什么窗户?
x64?vips.exe是 32 位的吗?一些原因:从 Win Vista 和以后的进程调度程序发生了很大变化,现在在更小的时间限制内没有响应的旧程序将被冻结。您可以尝试在 XP SP3 兼容模式下运行程序,同时关闭有时会有所帮助的高级 gfx 内容(防止程序停止工作消息)。如果您有 32 位应用程序,那么您将被限制为 4 或 2 GB 内存(取决于应用程序使用的内存管理器),有时分配 1GB 以上的块可能会出现问题。 -
在这种情况下,请尝试找到 64 位版本的应用程序(如果您有 64 位操作系统)或将图像切割成更小的部分。因为这不是一个编程问题,所以我投票结束
-
感谢您的回答:)。该程序似乎只有 32 位版本(虽然我有 32gb 的内存),我想“不关闭”这个话题的原因是因为它没有解决。我在这里发布了我的问题,因为 LibVIPS 是一个开源软件包,似乎在读取我的图像时出现问题。我真的看不出在我的项目中包含库或直接调用 VIPS.exe 之间有什么区别。 (为了使我的问题尽可能简单和集中,我选择使用他们的编译程序版本,而不是在我自己的项目中使用他们的库)。
-
1.在 x64 窗口上运行的 32 位程序在 WoW64 模拟器中运行,并且最多只能访问 4 GB 内存(安装 8 GB 或 128 GB 无关紧要)。一些内存管理器(取决于你的程序是用什么编译的)只能使用 2GB 的地址空间。我还发现,有时在 WoW64 下,如果你想分配大小超过 1 GB 的单个块,即使你有那么多内存(从 4GB 开始),有时也会崩溃。这个网站是针对与编程相关的问题。我认为你应该在不同的 Stack Exchange 网站上发布这个,不确定哪个可能是超级用户
-
但是如果 LibVIPS 是开源的,那么您可以尝试将其构建为非常适合该站点的 64 位应用程序...只需下载包源代码存储库(乌龟对此很有用)然后安装一些与此软件包兼容的 64 位编译器(我猜是一些 MSVC++ 或 GCC)并编译 64 位二进制文件......恐怕你需要一些额外的东西,比如框架 SDK;因为现在程序员无法做独立的东西,而是你需要包括无数糟糕的库来制作 helo 世界的例子......并且需要安装大量的垃圾来运行 exe......
标签: image-processing tiff libtiff vips