在Python中调整大图像的大小(比可用的RAM大)

2024-09-29 23:31:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我想调整大(1TB)图像并将其拆分为256x256像素的块(Zoomify/OSM/googlemaps/xyzschema)。图像将是BigTIFF或PSB(大文档格式或Photoshop Big)格式。在

有哪些可用的库可以做到这一点?我正在查看GDAL,但它产生的输出相当模糊,我无法将其设置为更好的插值。理想情况下,我会找一个Lanczos插值器来完成这项任务。在

有没有本地的Python库或基于C的库的包装器可以做到这一点?imagemagick的Python包装器能做到这一点吗?在

如果没有Python库可用,我也可以使用基于命令行的工具,我可以使用Python自动执行这些工具。在


Tags: 工具文档图像osm格式像素插值gdal
1条回答
网友
1楼 · 发布于 2024-09-29 23:31:10

libvips可以高效地处理大量(大于RAM)图像。它是一个流式图像处理库,因此它可以(在本例中)同时解压缩、调整大小、平铺和写入所有内容,而无需将整个图像保存在内存中或需要任何临时文件。

dzsave操作员将编写一个DeepZoom/Zoomify/googlemaps金字塔。您可以像这样从命令行运行它:

$ 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的图像转换成23万块。那是机械硬盘,用固态硬盘可能更快。有一个chapter in the docs introducing dzsave

它有a Python binding,因此您还可以写:

^{pr2}$

access选项告诉libvips它应该对图像进行流式处理。它可以读取BigTIFF和PSB。你会发现BigTIFF速度更快,需要的内存更少。

相关问题 更多 >

    热门问题