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