首页 > 解决方案 > 在 Python 中将 .svg 转换为非常大的 .bmp

问题描述

我们的实验室有一台激光刻录机,它可以拍摄黑白 .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 内存的计算机上崩溃。是否有任何库旨在为此类任务提供极高的内存效率?或者当前的库是否有显着的优化?

标签: pythonimagememorymemory-managementout-of-memory

解决方案


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


推荐阅读