Як проводити пакетне перетворення растрових файлів у SVG-файли?


13

У мене є багато растрових зображень сірого масштабу, які мені потрібно перетворити у векторний формат, наприклад SVG. Я використовував Inkscape, який дає хороші результати, але на це потрібно близько 10-15 хвилин, щоб відкрити, конвертувати та зберегти файл. Чи є інструмент пакетного чи командного рядка, який може конвертувати їх?


ви можете поглянути potraceтакож.
Стефан Шазелас

також можна використовувати Inkscape в якості посилання

Відповіді:


19

potrace

Я знайшов цей приклад на SO в Q&A під назвою: Як перетворити зображення JPEG у формат SVG за допомогою ImageMagick? . Один із запропонованих відповідей potrace.

$ convert input.jpg output.ppm
$ potrace -s output.ppm -o svgout.svg

Результати

           ss №1             ss №2

Переглядаючи potraceвеб-сайт, ви, очевидно, можете перейти безпосередньо з BMP до SVG.

$ potrace -s input.bmp -o output.svg

автодослідження

Іншим варіантом potraceє autotrace.

$ autotrace -output-file ouput.svg -output-format svg --color-count 4 input.bmp

Вам, швидше за все, доведеться пограти з тим, --color-countщоб отримати зображення, яке відповідає вашим потребам.

Результати

                                                 ss №3

Який використовувати?

З цих 2 це дійсно залежить від вихідного матеріалу. Якщо ви перетворюєте зображення, то potrace, ймовірно, кращий варіант. Для нефотографічних матеріалів, таких як шрифти та неживі предмети, такі як пейзаж, який включає такі речі, як дороги, а потім autotraceз його --centerlineперемикачем.

Хоча це не оптимально для фотографій, але він добре справляється з лінійним мистецтвом та зображеннями, що нагадують плакати. З кольором не дуже добре. Автодослідження має деякі функції, недоступні у вбудованому діалоговому вікні Potrace в Inkscape. Наприклад, є комутатор центральної лінії, який особливо корисний для відстеження доріг (у картах) або символів шрифту.

Пакетні перетворення

Ви можете обернути будь-яку з цих команд у циклі for на Bash, що спростить роботу над виконанням завдань масового перетворення.

$ for i in *.bmp; do <CONVERSION TOOL> ... "$i"; done

Список літератури


не потрібно зберігати проміжний файл з JPEG. як однолінійний я використовував:convert -channel RGB -compress None input.jpg bmp:- | potrace -s - -o output.svg
Луї Маддокс

9

Автодослідження

Ви можете спробувати автотракцію .

Використовуючи таку команду, ви отримуєте такі результати:

autotrace --output-format svg --output-file output.svg --color-count 4 imgsrc.jpg

Мені довелося взяти скріншот отриманого svg і зберегти як png, щоб показати вихід.

Ось вихідне зображення jpg:

джерело черепа

Ось отримане зображення:

череп перетворити


7

Як правило, я виконую всі завдання по маніпулюванню зображеннями з convertImageMagic, але я не можу змусити його грати добре з файлами svg. Однак ви можете використовувати inkscapeсебе з командного рядка:

for i in *bmp; do inkscape -f "$i" -l "$i.svg"; done

Це створить файли під назвою foo.bmp.svg. Щоб правильно імена, спробуйте:

for i in *bmp; do inkscape -f "$i" -l "${i%.bmp}.svg"; done

Проблема такого підходу полягає в тому, що, принаймні, в моїй системі він спливає набридливий графічний діалог із запитанням, чи хочу я пов’язати або вставити зображення:

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

Отже, вам все одно потрібно натиснути ОК вручну, але це все ще набагато швидше, ніж робити це файл за файлом.

Наскільки я можу сказати, вихідні зображення однакові:

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


Теоретично і те, convertі інше rsvg-convertповинно бути в змозі зробити це, але я не міг змусити його добре працювати над своїми зображеннями за кілька хвилин, які я пробував. Вони обоє варто розглянути.


Я не позитивний, але на веб-сайті Inkscape написано, що він зараз potraceвбудований, тому мені цікаво, чи все-таки він просто використовує цей інструмент? цитата: "Potrace тепер вбудований у Inkscape. Не потрібно його запускати окремо." - wiki.inkscape.org/wiki/index.php/Tools
slm

5
Я підозрюю, що Inkscape просто вбудує растрове зображення у SVG, отже, їх однаковий вигляд.
користувач2428118

@ user2428118 Я підозрюю, що ти маєш рацію. Це може бути або не бути проблемою залежно від того, що саме ви хочете зробити з цими зображеннями.
terdon

1

potraceє інструментом для цього. Ви можете обробити їх об'ємно, але спочатку потрібно перетворити зображення в однотонні:

ls ./*.jpg | xargs -L1 -I {}  convert -monochrome {} {}.ppm
ls -1 ./*.ppm | xargs -L1 -I {} potrace {} -r 300 -b svg -o {}.svg

Встановіть на Ubuntu:

sudo apt install potrace

Якщо ви хочете перетворити зображення, які не є монохромними, Inkscapeмає інструмент відстеження на пошуку, який підтримує кілька кольорів, він спочатку перетворює зображення в кольорові шари, а потім відстежує їх і поєднує результат.

Щоб скористатись відстежувачем, завантажте чи імпортуйте зображення, виберіть його та виберіть пункт Шлях > Простежити растровий малюнок або Shift+ Alt+B.

Побачити

Підручник тут!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.