Jak grupowo konwertować mapy bitowe na pliki SVG?

13

Mam wiele bitmap w skali szarości, które muszę przekonwertować do formatu wektorowego, takiego jak SVG. Korzystam z Inkscape, co daje dobre wyniki, ale otwarcie, konwersja i zapisanie pliku zajmuje około 10-15 minut. Czy istnieje narzędzie partii lub wiersza poleceń, które może je przekonwertować?

Wioska
źródło
możesz też rzucić okiem potrace.
Stéphane Chazelas
możliwe jest również użycie Inkscape jako linku

Odpowiedzi:

19

potrace

Znalazłem ten przykład na SO w odpowiedzi na pytanie: Jak przekonwertować obraz JPEG na format SVG za pomocą ImageMagick? . Jedna z sugerowanych odpowiedzi potrace.

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

Wyniki

           ss # 1             ss # 2

Patrząc na potracestronę, najwyraźniej możesz przejść bezpośrednio z BMP do SVG.

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

autotrace

Inną opcją potracejest autotrace.

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

Prawdopodobnie będziesz musiał grać z, --color-countaby uzyskać obraz, który odpowiada Twoim potrzebom.

Wyniki

                                                 ss # 3

Którego użyć?

Z tych 2 naprawdę zależy to od materiału źródłowego. Jeśli konwertujesz obrazy, potraceprawdopodobnie jest to lepsza opcja. W przypadku materiałów innych niż zdjęcia, takie jak czcionki i nieożywionych obiektów takich jak krajobrazy, który obejmuje takie rzeczy jak drogi, a następnie autotracez --centerlineprzełącznikiem.

Chociaż nie jest optymalny do zdjęć, dobrze sprawdza się w grafikach i obrazach podobnych do plakatów. Nie radzi sobie zbyt dobrze z kolorem. Autotrace ma pewne funkcje niedostępne w osadzonym oknie dialogowym Potrace w Inkscape. Na przykład przełącznik linii środkowej jest szczególnie przydatny do śledzenia dróg (na mapach) lub znaków czcionek.

Konwersje wsadowe

Możesz zawinąć dowolne z tych poleceń w pętlę for w Bash, co ułatwi pracę nad konwersją zbiorczą.

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

Bibliografia

slm
źródło
nie ma potrzeby przechowywania pliku pośredniego z JPEG. jako linijkę użyłem:convert -channel RGB -compress None input.jpg bmp:- | potrace -s - -o output.svg
Louis Maddox,
9

Autotrace

Możesz wypróbować automatyczne śledzenie .

Za pomocą następującego polecenia otrzymujesz następujące wyniki:

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

Musiałem zrobić zrzut ekranu wynikowego pliku SVG i zapisać go jako plik PNG, aby wyświetlić wynik.

Oto obraz źródłowy jpg:

źródło czaszki

Oto wynikowy obraz:

konwersja czaszki

rking
źródło
7

Zwykle wykonuję wszystkie zadania związane z manipulowaniem obrazami za pomocą convertImageMagic, ale nie mogę go ładnie odtwarzać z plikami svg. Możesz jednak użyć inkscapesiebie z wiersza poleceń:

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

Spowoduje to utworzenie plików o nazwie foo.bmp.svg. Aby uzyskać prawidłowe nazwy, spróbuj tego:

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

Problem z tym podejściem polega na tym, że przynajmniej w moim systemie pojawia się irytujące graficzne okno dialogowe z pytaniem, czy chcę połączyć lub osadzić obraz:

                                 wprowadź opis zdjęcia tutaj

Tak więc nadal musisz ręcznie kliknąć OK, ale nadal jest to znacznie szybsze niż robienie tego plik po pliku.

Obrazy wyjściowe są identyczne, o ile mogę powiedzieć:

   wprowadź opis zdjęcia tutaj


Teoretycznie jedno converti drugie rsvg-convertpowinno być w stanie to zrobić, ale nie mogłem zmusić go do dobrej pracy z moimi zdjęciami w ciągu kilku minut, które spędziłem próbując. Mimo to obaj warto się przyjrzeć.

terdon
źródło
Nie jestem pozytywny, ale na stronie Inkscape jest napisane, że teraz jest potraceosadzony, więc zastanawiam się, czy i tak używa tego narzędzia? cytat: „Potrace jest teraz osadzony w Inkscape. Nie trzeba go uruchamiać osobno”. - wiki.inkscape.org/wiki/index.php/Tools
slm
5
Podejrzewam, że Inkscape po prostu osadzi bitmapę w SVG, stąd ich identyczny wygląd.
user2428118
@ user2428118 Podejrzewam, że masz rację. Może to stanowić problem, w zależności od tego, co dokładnie chcesz zrobić z tymi obrazami.
terdon
1

potracejest do tego narzędziem. Możesz przetwarzać je zbiorczo, ale najpierw musisz przekonwertować obrazy na monochromatyczne:

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

Zainstaluj na Ubuntu:

sudo apt install potrace

Jeśli chcesz konwertować obrazy, które nie są monochromatyczne, Inkscapema narzędzie do śledzenia oparte na potrace, które obsługują wiele kolorów, najpierw konwertuje obraz na warstwy kolorów, a następnie śledzi je i łączy wynik.

Aby użyć znacznika, załaduj lub zaimportuj obraz, zaznacz go i wybierz Ścieżka > Śledź mapę bitową lub Shift+ Alt+B.

Widzieć

Samouczek tutaj!

Eduard Florinescu
źródło