在 Python 中将 .svg 转换为非常大的 .bmp

Convert .svg to extremely large .bmp in Python

我们实验室有一个激光写入器,它可以接收黑白 .bmp 图像并使用这些图像来确定平面上的哪些点将被激光照射。每个像素都是一个固定的面积单位,为了使总写入达到我们需要的大小,我们需要一个大约 50,000x50,000 像素的 .bmp。

我们需要从 .svg 文件生成那些 .bmp 文件。我有 python 代码可以对相对较小的图像执行此操作

from svglib.svglib import svg2rlg
from reportlab.graphics import renderPM

drawing = svg2rlg(outfile + '.svg')
renderPM.drawToFile(drawing, outfile + '.bmp', fmt='BMP')

但是当尝试创建我们需要的大图像之一时,Python 内存不足并在 32GB 内存的计算机上崩溃。是否有任何库旨在为此类任务提供极高的内存效率?或者当前库是否有可用的重大优化?

解决方案是 ImageMagick,它将超大图像的部分缓存到磁盘,以避免 运行 内存不足。存在命令提示符工具和工具的 Python 包装器。