Конвертировать SVG в PNG в Python

Quick Answer: Чтобы конвертировать SVG в PNG в Python, загрузите исходный файл через SVGDocument, создайте ImageSaveOptions и передайте оба объекта в Converter.convert_svg(). PNG является форматом изображения по умолчанию, а ImageSaveOptions позволяет настроить фон, размер страницы, поля и разрешение.

Конвертация SVG в PNG в Python

PNG – растровый формат без потерь, который поддерживает прозрачность. Он удобен для веб-графики, превью, миниатюр и приложений, которые не умеют напрямую отображать SVG.

Следующий пример конвертирует document.svg в result.png с настройками PNG по умолчанию:

1from aspose.svg import SVGDocument
2from aspose.svg.converters import Converter
3from aspose.svg.saving import ImageSaveOptions
4
5# Convert an SVG file to PNG using the default save options
6options = ImageSaveOptions()
7
8with SVGDocument("document.svg") as document:
9    Converter.convert_svg(document, options, "result.png")

Код выполняет три действия:

  1. SVGDocument загружает SVG-файл и разрешает его содержимое и связанные ресурсы.
  2. ImageSaveOptions выбирает вывод в изображение; формат по умолчанию – PNG.
  3. Converter.convert_svg() рендерит документ и записывает result.png.

Конвертация SVG в PNG с пользовательскими параметрами

Используйте ImageSaveOptions, если PNG должен иметь конкретный canvas, фон или разрешение. Следующий пример конвертирует winter.svg, добавляет сплошной фон, создает страницу 600 x 550 с полями 10 пикселей и рендерит при 96 dpi:

 1import os
 2from aspose.svg import SVGDocument
 3from aspose.svg.converters import Converter
 4from aspose.svg.saving import ImageSaveOptions
 5from aspose.svg.drawing import Resolution, Page, Size, Margin
 6from aspose.pydrawing import Color
 7
 8# Convert SVG to PNG with a custom background, page, and resolution
 9input_folder = "data/"
10output_folder = "output/"
11input_path = os.path.join(input_folder, "winter.svg")
12output_path = os.path.join(output_folder, "winter.png")
13os.makedirs(output_folder, exist_ok=True)
14
15options = ImageSaveOptions()
16options.background_color = Color.from_argb(231, 217, 230)
17options.page_setup.any_page = Page(Size(600, 550), Margin(10, 10, 10, 10))
18options.horizontal_resolution = Resolution.from_dots_per_inch(96.0)
19options.vertical_resolution = Resolution.from_dots_per_inch(96.0)
20
21with SVGDocument(input_path) as document:
22    Converter.convert_svg(document, options, output_path)

Полученный PNG использует заданные параметры страницы, а не только viewport SVG. Иллюстрация сравнивает исходный SVG и PNG, отрисованный на новом фоне.

Исходный SVG и преобразованный PNG с пользовательским фоном

Важные свойства ImageSaveOptions

СвойствоКогда использовать
background_colorЗаполнить прозрачные области выбранным цветом
page_setupЗадать размеры страницы и поля
horizontal_resolutionЗадать горизонтальное разрешение вывода в dpi
vertical_resolutionЗадать вертикальное разрешение вывода в dpi
smoothing_modeУправлять качеством растеризации
textНастроить рендеринг текста через TextOptions

Если background_color не задан, прозрачные области SVG остаются прозрачными в PNG. Разрешение влияет на плотность растра, а page_setup управляет canvas вывода. Если размеры страницы заданы в пикселях, размеры в пикселях обычно важнее, чем простое увеличение dpi.

Типичные ошибки и решения

ПроблемаВозможная причинаРешение
PNG пустой или обрезанВ SVG нет корректного viewport или выходная страница слишком малаЗадайте SVG width, height или viewBox, либо настройте options.page_setup.any_page
Прозрачные области выглядят неожиданноНе указан выходной фонЗадайте options.background_color, если нужен сплошной canvas
Текст выглядит иначеНужный шрифт недоступенУстановите шрифт или векторизуйте текст перед конвертацией, если важна точная форма глифов
Связанные изображения или CSS отсутствуютОтносительные ресурсы не могут быть разрешеныЗагружайте SVG из его файлового пути или задавайте корректный base URI
Размеры вывода не соответствуют ожиданиямРазмер страницы и разрешение воспринимаются как одна настройкаИспользуйте page_setup для размеров и horizontal_resolution/vertical_resolution для dpi

Онлайн-конвертер SVG в PNG

Вы также можете проверить конвертацию SVG в PNG в браузере. Загрузите SVG-файл, выберите PNG и сравните результат с программным выводом.

                
            

Попробуйте бесплатный онлайн SVG to PNG Converter, чтобы конвертировать SVG без написания кода.

FAQ

Как быстрее всего конвертировать SVG в PNG в Python?

Создайте ImageSaveOptions, откройте исходный SVG через SVGDocument и вызовите Converter.convert_svg(document, options, output_path).

Сохраняет ли конвертация SVG в PNG прозрачность?

Да. PNG поддерживает прозрачность, и прозрачные области SVG остаются прозрачными, если вы не зададите ImageSaveOptions.background_color.

Как задать размер PNG?

Настройте ImageSaveOptions.page_setup с помощью Page, Size и Margin. Свойства разрешения используйте отдельно, если нужен определенный dpi.

Можно ли конвертировать SVG-контент из строки?

Да. Создайте SVGDocument из SVG-строки и base URI, а затем передайте документ в Converter.convert_svg().

Связанные статьи