Мне нужно отрендерить очень большое изображение (> 50,000² пикселей) с помощью cairo. Чтобы сделать это без нехватки памяти, я визуализирую части изображения (‹1.000² пикселей) одну за другой и позже объединяю их вместе.
- Создать поверхность размером 1000x1000
- Перевести в положение текущей детали
- Нарисуйте изображение (вызовите инструкции по рисованию с помощью pycairo)
- Визуализировать / сохранить изображение в файл (cairo_surface_write_to_png)
- Повторите со следующей частью
Поскольку алгоритмы отсечения cairos быстрее, чем мои собственные, на третьем шаге отрисовывается все изображение, даже если видна только его часть. Большая часть ЦП используется на шаге 3 (python). Большая часть памяти используется на шаге 4 (от cairo).
Есть ли способ ускорить процесс? Что-то вроде этого?
- Создать поверхность размером 1000x1000
- Нарисуйте изображение
- Переместить все в положение текущей части
- Визуализировать / сохранить изображение в файл
- Повторите 3 со следующей частью
or
- Создать поверхность размером 50000x50000
- Нарисуйте изображение
- Визуализировать / сохранить в файл только текущую часть изображения
- Повторите 3 со следующей частью