Страница 1 из 1

Сохранение окна карты в файл изображения

Добавлено: 09 авг 2024, 06:52
bgnik
При сохранении карты в файл изображения с помощью метода "to_image" не учитывается толщина линейных объектов и размер точечных (любые отображаются одинаковыми). При создании файла изображения с помощью команды меню "Экспорт окна в растр" все выполняется корректно.

Re: Сохранение окна карты в файл изображения

Добавлено: 09 авг 2024, 18:48
Александр
Я проверил экспорт точечных объектов разных размеров.
Проблем не заметил.
img.png
img.png (1.97 КБ) 34162 просмотра
Исходный файл:
test.zip
(927 байт) 917 скачиваний

Code: Select all

mv = axipy.view_manager.active
image = mv.map.to_image(mv.device_rect.width, mv.device_rect.height, mv.coordsystem, mv.scene_rect)
image.save(r'c:\tmp\img.png')

Re: Сохранение окна карты в файл изображения

Добавлено: 12 авг 2024, 09:01
bgnik
Да, Александр, Вы правы. Действительно, проблему я сформулировал неверно.
Однако, мою проблему это не решает. Если я беру размер выходного растра не в координатах окна, а значительно больше, то результат меняется. С теми же размерами, но через меню "Экспорт окна в растр" я получаю такую же картинку, как на экране. PDF также нормальный. И в отчет для печать вставляется корректно. Что-то здесь не по моим мозгам...
Файлы с картинками и пояснением отправлю по почте, они слишком громоздкие.

Re: Сохранение окна карты в файл изображения

Добавлено: 12 авг 2024, 19:21
Александр
На данный момент метод Map.to_image() позволяет экспортировать карту с текущим разрешением экрана и нет возможности задавать разрешение для экспорта. Толщина линий и размеры символов зависят от этого разрешения.
Параметры width и height определяют размеры окна. Если вы увеличиваете размер окна, не меняя размеры ограничивающего прямоугольника карты, это приводит к изменению масштаба, так как разрешение остается неизменным.

Возможность задать разрешение есть у функции Map.draw()

Code: Select all

import axipy
import PySide2.QtGui as Qg
from PySide2.QtCore import Qt

k = 10 # во сколько раз увеличить картинку в пикселях

mv = axipy.view_manager.active
image = Qg.QImage(int(mv.device_rect.width * k), int(mv.device_rect.height * k), Qg.QImage.Format_ARGB32)
context = axipy.Context(Qg.QPainter(image))
context.coordsystem = mv.coordsystem
context.rect = mv.scene_rect
context.dpi = k * 96
mv.map.draw(context)
image.save(r'c:\tmp\img2.png')

Re: Сохранение окна карты в файл изображения

Добавлено: 14 авг 2024, 08:09
bgnik
Теперь все нормально. Александр, спасибо!