我有很多 50-100 MP 彩色图像,我想在 Linux 上查看。
例如,10000x17000 尺寸是典型的,但大多数图像查看器都会因内存不足而失败。
文件格式为png或jpg。
我想要的是能够查看此类图像的部分和全部,并能够滚动查看图像。内存消耗低,因此无需将完整图像解压到内存中的位图中。
答案1
格温维尤
这是默认的 KDE 图像查看器。我刚刚在 128 万像素彩色 JPEG 上试用了它(我的操作系统是 32 位)。Gwenview 大约用 1 秒钟加载了图像。
它最初加载的是缩小的图像。该过程仅使用了 55.8 MB 的内存,因此显然它尚未加载完整的未压缩图像数据。
在 100% 缩放时,平移图像非常灵敏。该过程现在占用 520 MB 内存,略高于未压缩的 32 位图像占用的 489 MB。
但是,对于您描述的大小的图像,将整个图像加载到内存中是在最近的计算机上很容易处理。(Linux 上的 32 位寻址限制为 3 GB。)
图像魔术师
图像魔术师支持处理巨幅图像而不将其全部存储在内存中。
为此,使用
display -limit memory 256mb huge_img.png
(替换256mb
为您想要使用的内存量)。ImageMagick 会将剩余的像素数据存储在磁盘上(/tmp/magick-12345678
),这样它就不必将其全部保存在内存中。
它似乎比 Gwenview 慢,但如果您不想安装 Gwenview 的所有 KDE 依赖项,或者资源严重受限,您可能会更喜欢它。
答案2
压缩的 jpg 可能只有 50 MB,但纯光栅大约有 700 MB。鉴于 32 位操作系统在一个进程中只能访问 2 或 3 GB 的内存... 由于操作系统负载和图形程序,可能没有空间。
问题是您使用的图像工具是否在内部处理栅格。要进行窗口查看,工具需要逐位访问 jpg 数据。我不知道这是否可行。
您可以在具有 8 或 16 GB 内存的 64 位操作系统上尝试此操作吗?如果可以,则说明他们正在扩展 jpg。