libvips可以有效地处理巨大(大于RAM)的图像。它是一个流式图像处理库,因此(在这种情况下)它可以同时解压缩,调整大小,平铺和写入所有内容,而无需将整个图像存储在内存中或需要任何临时文件。
该dzsave
操作会写的DeepZoom / Zoomify /谷歌地图金字塔。您可以从命令行像这样运行它:
$ vipsheader y.tif
y.tif: 104341x105144 uchar, 3 bands, srgb, tiffload
$ ls -l y.tif
-rw-r--r-- 1 john john 32912503796 Jun 13 13:31 y.tif
$ time vips dzsave y.tif x
real 3m4.944s
user 9m21.372s
sys 7m20.232s
peak RES: 640mb
$ ls -R x_files/ | wc
227190 227172 2784853
因此,在我的桌面上,它在3分钟内将32GB的图像转换为230,000个图块。带有机械硬盘,使用固态硬盘可能更快。文档中有一章介绍dzsave。
它具有Python绑定,因此您还可以编写:
import pyvips
image = pyvips.Image.new_from_file("y.tif", access="sequential")
image.dzsave("x")
该access
选项告诉libvips它应该流式传输图像。它可以读取BigTIFF和PSB。您会发现BigTIFF更快,并且需要更少的内存。