我必须用 cairo 渲染一个非常大的图像(>50.000² 像素)。为了在不耗尽内存的情况下做到这一点,我一个接一个地渲染图像的一部分(<1.000² 像素),然后将它们合并在一起。
- 创建 1000x1000 曲面
- 平移到当前零件的位置
- 绘制图像(使用pycairo调用绘图指令)
- 渲染/保存图像到文件 (cairo_surface_write_to_png)
- 重复下一部分
因为 cairos 裁剪算法比我自己的要快,所以第三步绘制了整个图像,即使它只有一部分是可见的。大部分 CPU 用于第 3 步(通过 python)。大部分内存用于第 4 步(由 cairo)。
有没有办法加快速度?像这样的东西?
- 创建 1000x1000 曲面
- 绘制图像
- 将所有内容移动到当前部分的位置
- 渲染/保存图像到文件
- 对下一部分重复 3
或者
- 创建 50000x50000 曲面
- 绘制图像
- 仅将图像的当前部分渲染/保存到文件
- 对下一部分重复 3