Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Linux CLI - преобразование растра в вектор (трассировка)

Автор вопроса: user3149678Ответов: 2

Я запускаю веб-сайт на сервере Ubuntu. Частью функциональности этого сайта является предоставление цветных векторных изображений. В конце я надеюсь получить результат, аналогичный Vector Magic. Хотя Vector Magic делает замечательную работу, они чрезвычайно дороги для количества изображений, которые я хочу обрабатывать через их API.

Я пытаюсь взять растровое изображение, поколдовать и, надеюсь, получить (несколько) чистое изображение SVG через CLI. Я знаю, что получить идеальные растровые > векторные изображения невозможно, но небольшая потеря качества не является проблемой. Уловка заключается в получении вектора с прозрачностью и цветом.

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

  • Inkscape имеет лучшую функцию трассировки растровых изображений, которую я когда-либо встречал. С чистыми результатами и цветами это было бы ОТЛИЧНЫМ решением. Проблема заключается в том, что эту функцию нельзя легко автоматизировать или использовать через CLI, и она непригодна (?) для моего сервера Ubuntu.

  • Я также пытался использовать Potrace, однако Potrace делает только черно-белые трассировки. К сожалению, цвет обязателен. Я слышал о предварительной обработке изображения с помощью mkbitmap, однако следующий вариант охватывает это.

  • Autotrace - второе лучшее решение, поскольку оно обеспечивает цветной SVG прямо из растра JPG или PNG (используя Potrace вместе с препроцессором), но качество ужасное.

  • KVEC удобен и во всем, но дает те же результаты, что и Autotrace.

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

Итак, мой вопрос: можно ли перейти от растра к вектору с помощью утилиты CLI? Или я заново изобретаю то, что уже есть, чтобы получить полуприличный результат? Я ценю любую помощь!

linuxsvgcommand-line-interfacevectorraster

Ответы

Ответ 1 · рейтинг 4 · user3149678

Я решил опубликовать свой ответ для других участников, на всякий случай:

Мне удалось использовать imagetracerjs для решения моей проблемы. Они предоставляют хорошие клиентские и серверные примеры. Хотя качество не идеальное (как и ожидалось при векторизации), оно имеет открытый исходный код и имеет множество опций для получения довольно приличного результата.

Ответ 2 · рейтинг 2 · Andras

Не забудьте проверить версию Java, возможно, ее будет проще использовать из CLI:

https://github.com/jankovicsandras/imagetracerjava

Основное использование:

java -jar ImageTracer.jar smiley.png

С опциями:

java -jar ImageTracer.jar smiley.png outfilename output.svg ltres 1 qtres 1 pathomit 8 colorsampling 1 numberofcolors 16 mincolorratio 0.02 colorquantcycles 3 scale 1 simplifytolerance 0 roundcoords 1 lcpr 0 qcpr 0 desc 1 viewbox 0 blurradius 0 blurdelta 20

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы