Экспорт в растр

Вопросы связанные с работой ГИС Аксиома
Ответить
Аватара пользователя
Владимир В
Сообщения: 24
Зарегистрирован: 25 мар 2024, 09:54

Экспорт в растр

Сообщение Владимир В » 27 авг 2024, 11:52

При экспорте части окна карты в растровое изображение типа jpeg белый фон заменяется на чёрный. Сохранение растрового изображения производится с помощью команд:

image = map_view.map.to_image(4960, 3612, CoordSystem.from_prj('0,7'), bbox)
image.save("map_image.jpg")

Аксиома 6, Astra Linux 1.7

Подскажите, пожалуйста, как решить данную проблему.
Аватара пользователя
Дмитрий
Сообщения: 83
Зарегистрирован: 04 июн 2019, 11:33

Re: Экспорт в растр

Сообщение Дмитрий » 27 авг 2024, 14:33

Попробуйте сменить формат выходного файла.
т.е.

Код: Выделить всё

image.save("map_image.png")
Аватара пользователя
Владимир В
Сообщения: 24
Зарегистрирован: 25 мар 2024, 09:54

Re: Экспорт в растр

Сообщение Владимир В » 27 авг 2024, 15:07

Белый фон стал прозрачным. Как вариант подходит. Но хотелось бы получить корректное сохранение в формате jpeg.
Аватара пользователя
Дмитрий
Сообщения: 83
Зарегистрирован: 04 июн 2019, 11:33

Re: Экспорт в растр

Сообщение Дмитрий » 27 авг 2024, 15:27

Аксиома формирует QImage с прозрачным альфа-каналом, но в данном случае проблема в том, что jpeg не поддерживает прозрачность и в результирующем файле прозрачный цвет становится черным.
Решить данную задачу можно, наложив данный QImage на другой с белым фоном, и сохранить результат.

Код: Выделить всё

import axipy
from PySide2.QtGui import QPainter, QImage
from PySide2.QtCore import Qt

map_view = axipy.view_manager.active
image = map_view.map.to_image(4960, 3612, axipy.CoordSystem.from_prj('0,7'))
image_result = image.copy()
image_result.fill(Qt.white)
painter = QPainter(image_result)
painter.drawImage(0, 0, image)
painter.end()
image_result.save("map_image.jpg")
Аватара пользователя
Владимир В
Сообщения: 24
Зарегистрирован: 25 мар 2024, 09:54

Re: Экспорт в растр

Сообщение Владимир В » 28 авг 2024, 10:14

Спасибо. Интересное решение. Но на практике получается, что на растр image_result с белым фоном накладывается растр image с черным фоном и всё остается на местах. Похоже, что при формировании image механизм прозрачности цвета не работает или не определен . Есть ли возможность задания цвета прозрачности? Подскажите, пожалуйста.
Аватара пользователя
gisamap
Сообщения: 331
Зарегистрирован: 18 окт 2019, 11:03

Re: Экспорт в растр

Сообщение gisamap » 28 авг 2024, 10:37

Добрый день.
Попробуйте использовать pillow
Вот ответ на ваш вопрос
https://stackoverflow.com/questions/916 ... b-with-pil
Владимир В писал(а): 28 авг 2024, 10:14 Спасибо. Интересное решение. Но на практике получается, что на растр image_result с белым фоном накладывается растр image с черным фоном и всё остается на местах. Похоже, что при формировании image механизм прозрачности цвета не работает или не определен . Есть ли возможность задания цвета прозрачности? Подскажите, пожалуйста.
Аватара пользователя
Дмитрий
Сообщения: 83
Зарегистрирован: 04 июн 2019, 11:33

Re: Экспорт в растр

Сообщение Дмитрий » 28 авг 2024, 11:03

Владимир В писал(а): 28 авг 2024, 10:14 Спасибо. Интересное решение. Но на практике получается, что на растр image_result с белым фоном накладывается растр image с черным фоном и всё остается на местах. Похоже, что при формировании image механизм прозрачности цвета не работает или не определен . Есть ли возможность задания цвета прозрачности? Подскажите, пожалуйста.
Скорее, растр без фона (прозрачный) накладывается на растр с белым фоном. А цвет прозрачности - в данном примере можно вместо белого установить тот, который необходим.
Наверное, имеет смысл вынести как параметр функции.
Аватара пользователя
Владимир В
Сообщения: 24
Зарегистрирован: 25 мар 2024, 09:54

Re: Экспорт в растр

Сообщение Владимир В » 28 авг 2024, 14:33

Спасибо. Подскажите, пожалуйста, как можно экспортировать отчет в растр. Описан механизм экспорта отчета в формате pdf через параметры принтера. Как задать формат растра не нашел. Метод .to_image() для отчета тоже не обнаружил.
Аватара пользователя
Дмитрий
Сообщения: 83
Зарегистрирован: 04 июн 2019, 11:33

Re: Экспорт в растр

Сообщение Дмитрий » 29 авг 2024, 17:42

Честно говоря, этот вопрос не прорабатывался. Можно сделать так:

Код: Выделить всё


printer = QPrinter()
report = Report(printer)

geometryReportItem = GeometryReportItem()
geometryReportItem.geometry = Polygon((10, 10), (10, 100), (100, 100), (10, 10))
geometryReportItem.style = PolygonStyle(45, Qt.red)
report.items.add(geometryReportItem)

size = report.page_size.toSize()
image = QImage(size, QImage.Format_ARGB32_Premultiplied)
image.fill(0)
painter = QPainter(image)
context = Context(painter)
# context.rect = Rect(0,0,size.width(),size.height())
report.draw(context)
image.save('out_png.png')

Но нужно учитывать, что нужный масштаб придется подбирать указанием соотношения размера растра и Context.rect
Ответить