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

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

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

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

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

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

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

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

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

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


person user3149678    schedule 18.05.2016    source источник


Ответы (2)


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

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

person user3149678    schedule 20.05.2016

Не забудьте проверить версию 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
person Andras    schedule 10.10.2016
comment
Могу я попросить вас просмотреть Как предлагать персональные библиотеки с открытым исходным кодом?? Я удалил другие сообщения. - person Martijn Pieters; 10.10.2016