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ć?


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


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


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ć.


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!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.