Как мне конвертировать SVG в PNG, используя дизеринг для градиентов?
Если я создаю градиент между двумя похожими цветами в Inkscape и экспортирую его в png, он выглядит примерно так:
Если вы посмотрите внимательно, вы можете увидеть кольца.
Если я создаю градиент в GIMP, есть возможность использовать дизеринг для предотвращения таких колец или линий.
Как мне конвертировать svg в png, используя дизеринг для градиентов?
3 ответа
Ну, я не знаю, как вы ожидаете, что дизеринг сработает, но обычно вы берете на себя сигнал к знаниям, в то время как вы, кажется, ожидаете, что возбуждение дизеринга, которое, конечно, не может работать.
Да нет
Сглаживание в градиентах выполняется не по причинам разрешения, а по соображениям скорости передачи данных. Вы получаете эффекты полос, потому что экспорт InkScape в PNG неправильно округляет значения RGB (с плавающей запятой) интерполированного градиента до 8-битных значений (256 шагов).
Это приводит к очень раздражающему и заметному типу полосового шума (в отличие от наложения шума, который имел бы место, если бы мы говорили о разрешении). Применение дизеринга - это форма шумоподавления, которая не уменьшает шум, а распространяет его в пространственной области, чтобы он больше не коррелировал с заметными формами (я избавлю вас от теории сигналов).
Ваше "решение" применения фильтра распределенного шума в GIMP на самом деле не лучше, чем кто-то, сталкивающийся с неровными краями в штриховой графике, непосредственно спрашивающий о параметре сглаживания и приказывающий им применить размытие по Гауссу!
Обратите внимание: фотография, уменьшенная до 4 цветов без сглаживания, и фильтр рассеянного шума, применяемый впоследствии. Фото уменьшено до 4 цветов с дизерингом. Какой из них выглядит лучше?
Как вы "прячете" зазубренные края -> размытие. Как вы решаете неровные края -> сглаживание при рендеринге. Как вы "скрываете" полосы в градиентах -> распространяете шум и т. Д. (Есть лучшие приемы, но вы всегда заканчиваете тем, что отбрасываете верность). Как вы решаете полосы в градиентах -> применять дизеринг во время рендеринга!
Так что да, я действительно могу понять отношение, когда спрашиваю, как решить проблему, когда мне говорят, что нужно почистить ее под ковром. Это не решение для серьезного графического дизайнера.
В настоящее время я борюсь с той же проблемой. Вопрос также был совершенно ясен, я знаю, потому что я прибыл на эту страницу в поисках того же ответа. То, что я пытаюсь сделать, это применить небольшой слой шума с фильтром или расширением в InkScape, который, мы надеемся, будет применен перед рендерингом, что немного увеличит ошибку округления, что приведет к неоптимальной, но лучше, чем ничего, плохой мужской шумообразователь. Но по крайней мере это сохранит детали, которые не требуют смешения:)
Попробуйте Gimp "Spread" фильтр (Filter > Noise > Spread) со значением 40px для вашего образца
Я нашел это в комментарии в трекере ошибок Inkscape, и он дает отличные результаты IMHO
Пожалуйста, не рассматривайте это как ответ. Я пишу это как ответ, так как написание комментариев ограничивает
Кажется, это известная проблема с Inkscape. Быстрый поиск в Google показал мне:
Источник исправлений (0.48.0), затем компилирование Inkscape
Применение некоторого фильтра (путем редактирования
/usr/share/inkscape/filters/filters.svg
) как размещено здесь или здесь, что, кстати, бесполезно на вашем образцеКроме того, поиск в Интернете для решения проблемы градиентной полосы Inkscape
Попробуйте другой инструмент, если это возможно
Я просто добавлю, что последним шагом является мое предложение, и хотя вы можете попробовать Xara или sK1, мне кажется, что только коммерческие инструменты (CorelDraw, Illustrator...) предлагают безупречные функции, которые действительно следует учитывать при выполнении серьезной работы, как вам не понравится, что такие вещи случаются после рендеринга
ура