问题描述
我们的实验室中有一台激光刻录机,可以接收黑白 .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 包装器。