cairo で非常に大きな画像 (>50.000² ピクセル) をレンダリングする必要があります。メモリを使い果たすことなくこれを行うには、画像の一部 (<1.000² ピクセル) を次々にレンダリングし、後でそれらをマージします。
- 1000x1000 サーフェスを作成
- 現在のパーツの位置に移動
- 画像を描画する (pycairo を使用して描画命令を呼び出す)
- 画像をレンダリング/ファイルに保存 (cairo_surface_write_to_png)
- 次の部分で繰り返します
cairos クリッピング アルゴリズムは私のものよりも高速であるため、ステップ 3 では、画像の一部しか表示されていない場合でも、画像全体を描画します。CPU のほとんどは、ステップ 3 (by python) で使用されます。メモリの大部分は、ステップ 4 (カイロによる) で使用されます。
物事をスピードアップする方法はありますか?このようなもの?
- 1000x1000 サーフェスを作成
- イメージを描く
- すべてを現在のパーツの位置に移動
- 画像をレンダリング/ファイルに保存
- 次の部分で 3 を繰り返します
また
- 50000x50000 サーフェスを作成
- イメージを描く
- 画像の現在の部分のみをファイルにレンダリング/保存
- 次の部分で 3 を繰り返します