【问题标题】:Big images with cairo开罗的大图像
【发布时间】:2009-03-05 14:19:46
【问题描述】:

我必须用 cairo 渲染一个非常大的图像(>50.000² 像素)。为了在不耗尽内存的情况下做到这一点,我一个接一个地渲染图像的一部分(

  1. 创建 1000x1000 曲面
  2. 翻译到当前零件的位置
  3. 画图(使用pycairo调用绘图指令)
  4. 渲染/保存图像到文件 (cairo_surface_write_to_png)
  5. 下一部分重复

因为 cairos 裁剪算法比我自己的更快,所以第三步绘制了整个图像,即使只有一部分可见。大部分 CPU 用于第 3 步(通过 python)。大部分内存用于第 4 步(由 cairo)。

有没有办法加快速度?像这样?

  1. 创建 1000x1000 曲面
  2. 画图
  3. 将所有内容移动到当前部分的位置
  4. 渲染/保存图像到文件
  5. 下一部分重复 3

  1. 创建 50000x50000 曲面
  2. 画图
  3. 仅将图像的当前部分渲染/保存到文件中
  4. 下一部分重复 3

【问题讨论】:

    标签: python cairo


    【解决方案1】:

    首先,使用 C 或 Vala 代替 Python 可能会加快速度。

    至于内存使用,我会尝试写入自己的流,而不是文件(请参阅write_to_png_stream)。这可以让你(我没有尝试过)控制内存使用,假设 Cairo 不会在一切完成后只调用你的函数一次。

    【讨论】:

    • 另一种语言不是一种选择,也不能解决问题,但 write_to_png_stream 是个好主意。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多