使用Python调整大图像(大于可用RAM)

使用Python调整大图像(大于可用RAM),第1张

概述我想调整大小(1 TB)图像到256×256像素图块(Zoomify / OSM / Google Maps / XYZ架构).图像将采用BigTIFF或PSB(大文档格式或Photoshop Big)格式. 哪些可用的库可以做到这一点?我正在看GDAL,但它产生了非常模糊的输出,我无法设置它更好地插值.理想情况下,我会考虑使用Lanczos插值器完成此类任务. 是否有任何本机Python库或基于 我想调整大小(1 TB)图像到256×256像素图块(Zoomify / OSM / Google Maps / XYZ架构).图像将采用BigTIFF或PSB(大文档格式或Photoshop Big)格式.

哪些可用的库可以做到这一点?我正在看GDAL,但它产生了非常模糊的输出,我无法设置它更好地插值.理想情况下,我会考虑使用lanczos插值器完成此类任务.

是否有任何本机Python库或基于C的库的包装器可以做到这一点? imagemagick的Python包装器可以做这样的事吗?

如果没有可用的Python库,我也可以使用基于命令行的工具,我可以使用Python自动化.

解决方法 libvips可以有效地处理大量(大于RAM)的图像.它是一个流式图像处理库,因此它可以(在这种情况下)同时解压缩,调整大小,平铺和写入所有内容,而不需要将整个映像放在内存中或需要任何临时文件.

dzsave运算符将编写DeepZoom / Zoomify / Google Maps金字塔.您可以从命令行运行它,如下所示:

$vipsheader y.tify.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 xreal    3m4.944suser    9m21.372ssys 7m20.232speak RES: 640mb$ls -R x_files/ | wc 227190  227172 2784853

因此,在我的桌面上,它在大约3分钟内将32GB图像转换为230,000个图块.这是一个机械硬盘,它可能会更快与SSD.有一个chapter in the docs introducing dzsave.

它有a Python binding,所以你也可以这样写:

import pyvipsimage = pyvips.Image.new_from_file("y.tif",access="sequential")image.dzsave("x")

访问选项告诉libvips它应该流式传输图像.它可以读取BigTIFF和PSB.你会发现BigTIFF更快,内存更少.

总结

以上是内存溢出为你收集整理的使用Python调整大图像(大于可用RAM)全部内容,希望文章能够帮你解决使用Python调整大图像(大于可用RAM)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1193954.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存