SVG, экспортированный в EMF, теряет точность, но экспортируется, поскольку PNG выглядит хорошо

Я программист Windows, который должен конвертировать определенный SVG в EMF, чтобы использовать его для программирования.

Мои навыки графического дизайна находятся на начальном уровне, но мне удалось успешно конвертировать файл SVG в EMF с помощью Inkscape. Однако результат не выглядит оригинальным, он, так сказать, менее "точен". Если я экспортирую SVG как PNG, результат будет таким же, как и у исходного файла. К сожалению, мне нужен векторный формат, который распознает Windows, и это только EMF (я использую чистый WinAPI и C++, поэтому это ограничение...).

Чтобы точно понять, что я имею в виду, ссылка на оригинальный SVG, а также EMF и PNG, которые я сделал, находится здесь. Просто нажмите на Download:test.rar над 5 желтыми звездами (см. Рисунок ниже).

введите описание изображения здесь

Похоже, проблема заключается в размерах файла EMF (он должен быть 90 x 120), так как изображение становится кристально чистым, когда я изменяю размер приложения до больших размеров.

Я прошу вашей помощи, чтобы получить то же графическое качество файла EMF, что и оригинальный SVG.

Чтобы еще больше помочь вам в ваших усилиях по решению моей проблемы, вот небольшое приложение, которое будет отображать ЭДС в окне. Просто держите EMF в том же месте, где находится приложение, и назовите EMF как test.emf ,

Спасибо за ваше время и усилия. С наилучшими пожеланиями.

2 ответа

Решение

Я сделаю сравнение с вашей тестовой графикой:

  1. Это файл PNG, который вы предоставляете, так что это, вероятно, желаемый результат:

    введите описание здесь

  2. Выход вашего кода, ок. в том же размере:

    введите описание здесь

  3. Предоставляемый вами файл EMF отображается в IrfanView (снова примерно того же размера)

    введите описание здесь

  4. То же, что и 3., но с View -> Display Options -> Use Resample включенный:

    введите описание здесь

Заключение

Так как 4. выглядит как 1. (то есть желаемый результат), я пришел к выводу, что преобразование в формат EMF совершенно нормально, но ваш код масштабирует графику с помощью простого, возможно, пиксельного алгоритма. Так что ИМХО вам нужно реализовать, например, процедуру билинейной интерполяции.

При просмотре с помощью Photoshop у EMF нет добавленного фрейма, поэтому это проблема для зрителя.

Я не могу загрузить вашу программу просмотра по какой-то непонятной причине. Я использовал Free WMF Viewer для просмотра вашей картинки EMF,

Файл EMF выглядит идеально - он отлично масштабируется вверх и вниз, как и изображение векторной графики. Но этот зритель также показывает черную рамку вокруг изображения.

Я также просмотрел вашу EMF, используя старый просмотрщик wmf/emf, который я когда-то написал, который также не показывает черную рамку. Я отмечаю, что в моем собственном средстве просмотра я использовал ограничивающий прямоугольник только для определения соотношения сторон изображения (высота и ширина), чтобы правильно отображать его, то есть не сжимать и не растягивать.

Мой вывод заключается в том, что оба зрителя отображают ограничивающий прямоугольник в виде рамки. Это неверно, поскольку его целью является предоставление информации о рекомендованном прямоугольнике просмотра изображения, а не его отображение. Таким образом, ваш процесс генерации ЭДС кажется правильным.

Другие вопросы по тегам