как растрировать SVG без сглаживания

Я сделал карту в inkscape, и теперь мне нужно изменить ее на растровое изображение или .png. Карта будет интерпретирована компьютерной программой, которая будет искать точные цвета, поэтому края должны быть четкими. когда я экспортирую .png с помощью inkscape, использую онлайн-конвертер файлов или даже делаю снимок экрана, он всегда сглаживается. помощь.введите описание изображения здесь

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

Хм... не похоже, что Inkscape предлагает опцию псевдонима при экспорте в растр. Вы можете попробовать открыть SVG в растровом приложении (например, PS) и посмотреть, предлагает ли оно вам там опцию псевдонима.
Photoshop 7.0, который у меня есть, не имеет возможности открывать SVG. У меня нет других программ, которые могут это сделать. если есть какие-либо бесплатные программы, которые могут работать, мне интересно, что они из себя представляют.
Что касается растровых приложений, GIMP имеет открытый исходный код. Paint.net — бесплатная программа. Однако не уверен, поддерживает ли любой из них открытие SVG.
Похоже , это можно сделать в браузере: stackoverflow.com/questions/16889078/…
О, и, наконец... одним из обходных путей может быть сделать снимок экрана, поместить его в PhotoShop, а затем использовать фильтр/инструмент PhotoShop «Posterize», чтобы уменьшить цветовую палитру до только чистых цветов, которые вы хотите использовать.
вы можете распечатать в pdf и позволить ghostscript растрировать его.

Ответы (5)

Разрабатываемая версия Inkscape (предстоящий выпуск 0.91) имеет глобальный переключатель сглаживания в окне свойств документа, который также должен работать для экспорта. Найдите «Версии для разработчиков» на странице загрузки:

http://www.inkscape.org/en/download/

спасибо, не знаете, сколько времени до выхода? на сайте не увидел.
Текущая фаза - «Мороз». Вы можете увидеть прогресс в выпуске здесь: inkscape.org/en/develop/next-release Я думаю, что он должен быть выпущен в течение следующих 5 месяцев.
Ух ты. Они прыгают с 0,48 до 0,91! Конечно, это меньше, чем «половина версии», но все же огромное обновление в мире inkscape. Версия 1.0, вот и мы!
К сожалению, на экспорт это никак не влияет...
У меня также не работало при экспорте в файл PNG.
Иногда этот переключатель не работает, потому что ваш стиль рабочего стола в настройках загрязняется свойствами рендеринга формы, я пока не знаю, что вызывает это. Попробуйте с новым файлом настроек и новым документом.
Этот переключатель не действует на меня, независимо от того, что я делаю. Даже когда я делаю новый образ, даже перед экспортом.

В Inkscape 0.91 и более поздних версиях есть возможность переключать сглаживание. Доступ к этому можно получить через окно свойств документа (Shift+Ctrl+D). При включении, которое установлено по умолчанию, это изображение массива треугольников выглядит так.

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

В выключенном состоянии изображение выглядит более плавным.

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

Как уже упоминалось, в настоящее время это не влияет на экспорт png. Сглаживание все еще включено, и промежутки между треугольниками все еще видны.

Когда вы отключаете сглаживание, Inkscape добавляет shape-rendering="crispEdges"в файл. Откройте свой SVG в текстовом редакторе и посмотрите где-нибудь в строке 19, и вы должны его увидеть.

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

К счастью, этот тег читается и соблюдается при импорте SVG в GIMP. GIMP может импортировать SVG и устанавливать разрешение импорта, а это означает, что вы можете масштабировать свой png при импорте до желаемого размера. Он обрежет его до границ страницы.

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

Теперь вы можете сохранить изображение, и сглаживание будет отключено.

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

Несколько раз об этом сообщалось как об ошибке:

Идеальное объяснение! Для иллюстрации диагональная или круглая форма сделала бы эффект более заметным.
Я обнаружил, что загрузка в GIMP не работает, если я не выследил каждый экземпляр shape-rendering:autoв SVG и не преобразовал его в crispEdges. Оказывается, многие пути (возможно, все) имеют :autoспецификацию в своем стиле.
Работал у меня с GIMP над сложным рисунком. ( shape-renderingтолько один раз появился в SVG, в отличие от того, что нашел MutantBob.) Кроме того, получил точно такие же результаты от ImageMagick (та же библиотека, что и GIMP, я уверен): magick -density 96 image.svg image.pngОбратите внимание, что magick +antialias ...пока не работает с SVG, и, таким образом, это свойство документа Inkscape должно быть настроен на управление алиасингом как с GIMP, так и с IM (и IM должен использовать эту информацию, чтобы исправить это).

Одним из простых решений является экспорт в PDF, а затем использование Ghostcript для полученного PDF. Используя изображение клубники из Openclipart и команду

gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=png16m \
   -r72 -dGraphicsAlphaBits=1 \
   -sOutputFile=image.png image.pdf 

Я получаю следующий результат.

Изображение клубники без антисглаживания. Увеличенное изображение клубники без антисглаживания.

Если ваше изображение также включает текст, вам также нужно добавить его -dTextAlphaBits=1. Измените значение -r72на другое, чтобы масштабировать изображение.

Это, конечно, окольный способ сделать это, но черт возьми, если это не сработает.
Чтобы сделать то же самое с ImageMagick: magick +antialias -density 72 image.pdf image.pngИли, в один шаг из SVG: inkscape --export-pdf=- image.svg | magick +antialias -density 72 pdf:- image.pngЭто также как-то лучше работает с линейными эффектами, чем делать это в два этапа. Также обратите внимание, что при этом получаются несколько иные псевдонимы, чем при сохранении SVG с отключенным свойством «Использовать сглаживание» ( shape-rendering="crispEdges"), а затем с использованием: magick -density 72 image.svg image.pngОбратите внимание, что magick +antialias...пока не работает с SVG, но работает с PDF-файлами, как показано.

Вы также можете использовать shape-renderingсвойство SVG, чтобы сделать края четкими.

В SVG XML это выглядит так:

<svg:something shape-rendering="crispEdges" ... />

В пользовательском интерфейсе Inkscape вы можете установить это вручную с помощью редактора XML ( Ctrl+ Shift+ X), как показано на этом снимке экрана:

XML-редактор Inkscape

Выберите узел, к которому должно применяться это свойство. Здесь я применяю его к группе путей. Свойство отображается справа. Чтобы добавить его, скопируйте текст, который вы видите в правом нижнем углу, затем нажмите Set.

Это потрясающе! Именно то, что мне нужно для изображения, где некоторые формы должны быть сглажены, а другие выглядят лучше без него. Спасибо большое!
Это идеально, но в настоящее время не работает в Inkscape. gitlab.com/inkscape/inbox/-/issues/5151

Есть библиотека resvg , написанная на Rust. Частью проекта является приложение командной строки, которое позволит вам отображать SVG как PNG. Упомянутое приложение позволяет оптимизировать скорость, а не качество, что обычно дает желаемый результат.

Вы можете выполнить приложение, как показано ниже, как описано здесь автором.

rendersvg --shape-rendering optimizeSpeed --text-rendering optimizeSpeed --image-rendering optimizeSpeed in.svg out.png

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