#!/bin/bashFile_png="${1?:Usage: $0 file.png}"if[[!-s "$File_png"]];then
echo >&2"The first argument ($File_png)"
echo >&2"must be a file having a size greater than zero"(set-x ; ls -s "$File_png")exit1fiFile="${File_png%.*}"
convert "$File_png""$File.pnm"# PNG to PNM
potrace "$File.pnm"-s -o "$File.svg"# PNM to SVG
rm "$File.pnm"# Remove PNM
Polecenie jednowierszowe
Jeśli chcesz przekonwertować wiele plików, możesz także użyć następującego wiersza poleceń:
Obraz traci kolor po konwersji z pnm do svg za pomocą potrace. Czy jest jakiś sposób na zachowanie koloru?
Koder
1
Cześć @mundella. Zawsze używałem potraceczarno-białych ikon. Dziękuję za twój komentarz. Ale przepraszam, nie mam pojęcia, jak zachować kolory ... Ho! Mam pomysł: jeśli twój oryginalny obraz ma kilka kolorów (powiedzmy trzy unikalne kolory), możesz utworzyć trzy początkowe obrazy (po jednym dla każdego koloru). Następnie przekonwertuj na SVG. I na koniec scal trzy treści SVG w jednym pliku (SVG jest oparty na XML). Mam nadzieję, że to może pomóc ... Pozdrawiam ;-)
olibre
@olibre Czy jest jakaś platforma pragmatycznie robić te same rzeczy
Ami Kamboj
1
Cześć @AmiKamboj. Nie jestem pewien, czy rozumiem twoje pytanie. Polecenia converti potracesą dostępne na wielu platformach. Używam komputerów z systemem Linux. Właśnie użyłem tych poleceń wczoraj do stworzenia pliku SVG ze zeskanowanego papieru. Możesz zobaczyć wynik: cpp-frug.github.io/images/Cpp-President-2017.svg Proszę wyjaśnić więcej o swoim celu. Czego chcesz / zastanawiasz się? Jaka jest twoja potrzeba / życzenie? Pozdrawiam ;-)
olibre
1
Użyłem prawie każdego internetowego konwertera X na SVG. Pakiet potrace npm wysadził je wszystkie z wody. To jest zajebiste.
tsteve
59
Png to styl grafiki bitmapowej, a SVG to projekt graficzny oparty na wektorze, który obsługuje bitmapy, więc nie jest tak, jakby przekształcił obraz w wektory, tylko obraz osadzony w formacie wektorowym. Możesz to zrobić za pomocą http://www.inkscape.org/, która jest bezpłatna. Osadziłby go, ale ma również silnik podobny do Live Trace, który spróbuje przekonwertować go na ścieżki, jeśli chcesz (używając potrace). Zobacz śledzenie na żywo w programie Adobe Illustrator (komercyjnym) jest przykładem:
Użyłem śledzenia na żywo w Inkscape do odtworzenia logo z dawno zagubionymi oryginałami. O ile najnowsza wersja nie wprowadziła pewnych ulepszeń, jest to trochę hit lub miss. Powiedziawszy to, ręcznie wyśledziłem także niektóre logo w Inkscape i całkiem dobrze sobie poradziłem.
ten Potrace jest bardzo dokładny, gdy wiesz, jak go używać: ale nie jest wielokolorowy 1.) przekonwertuj plik do BMP 2.) (dla dokładnej części) przekonwertuj bmp do wysokiej rozdzielczości (strech it) 3.) pokoloruj kształty chcesz śledzić na czarno 4.) przekonwertować 5.) zmienić szerokość i wysokość na oryginał 6.) docenić dokładne śledzenie.
Jak zobaczysz, jeśli chcesz zrobić wiele innych sprytnych rzeczy .svg, możesz to zrobić również za pomocą Inkscape.
Spostrzeżenie nietechniczne: osobiście wolę tę metodę od „darmowych” ofert witryn, ponieważ oprócz często wymagającej rejestracji, przesyłając obraz, praktycznie we wszystkich aspektach, przekazuje się go właścicielowi witryny.
Dlaczego głosowanie negatywne? Bardzo skutecznie stosuję to podejście. Przynajmniej uprzejmie wyjaśnij, dlaczego ludzie mogą skorzystać z twoich spostrzeżeń.
Pancho
5
Postępowanie zgodnie z tymi instrukcjami powoduje zawijanie obrazu tylko w formacie SVG XML - nie konwertuje niczego na dane ścieżki.
Robert
@Robert - dzięki za informację, byłem błogo ignorantem, ponieważ zadziałało dobrze dla moich celów. Nie wpływa to jednak na fakt, że Inkscape jest w stanie przeprowadzić pełną konwersję PNG do SVG - i wiele więcej. Aby zilustrować wszystkie zainteresowane osoby, zmieniłem odpowiedź, dodając krótki objaśniający klip wideo.
Pancho
Czy to naprawdę tak jest? Sprawdziłem wygenerowany plik SVG i wydaje się, że zawiera dane ścieżki, w przeciwieństwie do metody mobilefish ...
dario_ramos
Są ludzie, którzy od czasu do czasu dyskutują o tym bez żadnej uzasadnionej przyczyny i zaczynam formułować opinię, że jest to złośliwe. Jeśli naprawdę jest jakiś powód - nie ma problemu, przestań być leniwy i dodaj wartości tej społeczności, zapewniając ją.
Pancho
15
z programem Adobe Illustrator:
Otwórz Adobe Illustrator. Kliknij „Plik” i wybierz „Otwórz”, aby załadować plik .PNG do programu. Edytuj obraz w razie potrzeby przed zapisaniem go jako plik .SVG. Kliknij „Plik” i wybierz „Zapisz jako”. Utwórz nową nazwę pliku lub użyj istniejącej nazwy. Upewnij się, że wybrany typ pliku to SVG. Wybierz katalog i kliknij „Zapisz”, aby zapisać plik.
+1 dla online-convert.com. Wypróbowałem to teraz z kilkoma monochromatycznymi sylwetkami ... wykonanymi bezbłędnie .. Wydaje się też, że jest całkowicie darmowy.
nedR
Tak, jeden z lepszych konwerterów ... Dzięki
JayD
1
Nie zdawałem sobie sprawy, że Illustrator to przygotował. Mając już wszystko jako .ai, zaoszczędzi mi to mnóstwo czasu.
Doyle Lewis
10
Ku mojemu zdziwieniu, potrace, jak się okazuje, może przetwarzać tylko czarno-biały. Może to być dobre dla twojego przypadku użycia, ale niektórzy mogą uznać brak śledzenia kolorów za problematyczny.
Osobiście miałem satysfakcjonujące wyniki dzięki
Vector Magic
Uwaga dla osób korzystających Potrace i ImageMagick , przekształcając PNG obrazów z przezroczystością do PPM nie wydają się działać bardzo dobrze. Oto przykład, który używa -flattenflagi convertdo obsługi tego:
Innym interesującym zjawiskiem jest to, że jako format wejściowy można użyć PPM (256 * 3 kolory, tj. RGB), PGM (256 kolorów, tj. Skala szarości) lub PBM (2 kolory, tj. Tylko biały lub czarny). Z moich ograniczonych obserwacji wynika, że na obrazach, które są antyaliasingowane, PPM i PGM (które produkują identyczne SVG, o ile widzę) zmniejszają kolorowy obszar, a PBM rozszerza kolorowy obszar (choć tylko trochę). Prawdopodobnie jest to różnica między pixel > (256 / 2)testem a pixel > 0testem. Możesz przełączać się między tymi trzema, zmieniając rozszerzenie pliku, tj. następujące zastosowanie PBM :
Naprawdę działa jak urok nawet w obrazach złożonych. Naprawdę polecam to narzędzie.
Atıfcan Ergin
Niestety nie zadziałało.
adamj
Nie działa dobrze, jeśli obraz ma przezroczystość
Genaut
Nie możesz oczekiwać, że skrypt zrobi ci zdjęcie i uzyskasz idealnie warstwowy plik SVG, nie ma czegoś takiego. Jeśli masz prosty kształt i chcesz uzyskać ścieżkę (ścieżki), robi to. Zrobiłem dużo ikon czcionek na tej stronie i nigdy nie zawiodłem.
thednp
@thednp mój obraz wyszedł czarno-biały
iOSAndroidWindowsMobileAppsDev
7
Właśnie znalazłem to pytanie i odpowiedzi, gdy próbuję zrobić to samo! Nie chciałem korzystać z niektórych innych wymienionych narzędzi. (Nie chcę oddawać mojego e-maila i nie chcę płacić). Odkryłem, że Inkscape (v0.91) może zrobić całkiem dobrą robotę. Ten samouczek jest szybki i łatwy do zrozumienia.
To tak proste, jak wybranie mapy bitowej w Inkskape i Shift + Alt + B.
W zależności od tego , dlaczego chcesz przekonwertować z .png na .svg, może nie być konieczne przechodzenie przez ten problem. Konwersja plików .png (rastrowych) do .svg (wektorowych) może być uciążliwa, jeśli nie znasz dobrze dostępnych narzędzi lub nie jesteś z zawodu grafikiem.
Jeśli ktoś wyśle ci duży plik o wysokiej rozdzielczości (np. 1024x1024), możesz zmienić jego rozmiar do praktycznie dowolnego rozmiaru w GIMP. Często występują problemy ze zmianą rozmiaru obrazu, jeśli rozdzielczość (liczba pikseli na cal) jest zbyt niska. Aby to naprawić w GIMP, możesz:
File -> Open: twój plik .png
Image -> Image Properties: sprawdź Rozdzielczość i przestrzeń kolorów. Chcesz rozdzielczość około 300 ppi. W większości przypadków chcesz, aby przestrzeń kolorów była RGB.
Image -> Mode: ustaw na RGB
Image -> Scale Image: pozostaw rozmiar w spokoju, ustaw i rozdzielczość Y na 300 lub więcej. Hit Scale.
Image -> Scale Image: rozdzielczość powinna teraz wynosić 300 i możesz teraz zmienić rozmiar obrazu do niemal dowolnego rozmiaru.
Nie tak proste jak zmiana rozmiaru pliku .svg, ale zdecydowanie łatwiejsze i szybsze niż próba konwersji pliku .png na plik .svg, jeśli masz już duży obraz w wysokiej rozdzielczości.
Zakładam, że chcesz do tego napisać oprogramowanie. Aby zrobić to naiwnie, wystarczy znaleźć linie i ustawić wektory. Aby zrobić to inteligentnie, próbujesz dopasować kształty do rysunku (dopasowanie modelu). Ponadto powinieneś spróbować ustalić regiony bitmapowe (regiony, których nie można modelować przez wstyd lub stosowanie tekstur. Nie polecam wybrania tej trasy, ponieważ zajmie to trochę czasu i będzie wymagało odrobiny wiedzy graficznej i komputerowej. Jednak dane wyjściowe będą znacznie skalowane i skalowane znacznie lepiej niż oryginalne dane wyjściowe.
To osadza obraz w svg, a nie w prawdziwej grafice wektorowej
Paul Gobée,
Przekształciło to jeden z moich kolorowych plików PNG, w których inne konwertery online nie były w stanie poprawnie przekonwertować. Myślałem, że działa, ponieważ mogę go otworzyć w przeglądarce, ale kiedy próbowałem otworzyć go na innym narzędziu, wystąpił błąd. Może z powodu powyższego komentarza.
vida
-1
Jeśli korzystasz z jakiegoś systemu Linux, imagemagick jest idealny. To znaczy
convert somefile.png somefile.svg
Działa to ze stertami różnych formatów.
W przypadku innych mediów, takich jak wideo i wykorzystanie audio (ffmpeg)
, wiem jednak, że wyraźnie podałeś png do svg; Nadal jest związany z mediami.
ffmpeg -i somefile.mp3 somefile.ogg
Tylko wskazówka, jeśli chcesz przejrzeć wiele plików; pętla wykorzystująca podstawowe sztuczki z powłoką ..
for f in*.jpg;do convert $f ${f%jpg}png;done
To usuwa plik jpg i dodaje plik png, który mówi, że chcesz przekonwertować, co chcesz.
Imagemagick działa na innych platformach, nie tylko „Linux”.
Lunatik
25
To technicznie działa, jednak wygenerowany plik svg nie jest tak naprawdę grafiką wektorową - zawiera tylko oryginalną mapę bitową „tak jak jest”. Zatem po powiększeniu nadal uzyskuje się obniżoną jakość obrazu rastrowego.
Erel Segal-Halevi
7
@ ArcheyDevil nie, to nie jest „konwersja” do SVG, to „osadzanie” bitmapy w pustym SVG. Nikomu się nie przyda.
Adam
4
@archeyDevil Tytuł pytania to „konwersja ... do SVG”. Twoja odpowiedź nie jest konwertowana. Osadza. PNG to format bitmapowy, SVG to format wektorowy. Ogromna różnica. Osadzanie jest bezużyteczne i nie zasługuje na SO pytanie IMHO
Adam
3
Wiem, że się nie konwertuje. Zrobiłem jednak; opublikuj to dla tych, którzy nie potrzebują analizy wektorowej, ale potrzebują tylko szybkiej i brudnej zmiany między typami plików.
Odpowiedzi:
Istnieje strona internetowa, na której możesz przesłać swoje zdjęcie i zobaczyć wynik.
http://vectormagic.com/home
Ale jeśli chcesz pobrać obraz SVG, musisz się zarejestrować. (Jeśli się zarejestrujesz, otrzymasz 2 zdjęcia za darmo)
źródło
potrace
ma nie obsługiwać PNG jako pliku wejściowego, ale PNM .Dlatego najpierw
convert
od PNG do PNM:Wyjaśnij opcje
potrace -s
=> Plik wyjściowy to S VGpotrace -o file.svg
=> Zapisz dane wyjściowe dofile.svg
Przykład
Plik wejściowy =
2017.png
Plik tymczasowy =
2017.pnm
Plik wyjściowy =
2017.svg
Scenariusz
ykarikos proponuje skrypt png2svg.sh, który ulepszyłem:
Polecenie jednowierszowe
Jeśli chcesz przekonwertować wiele plików, możesz także użyć następującego wiersza poleceń:
Zobacz też
Zobacz także to dobre porównanie konwerterów rastrowych na wektorowe na Wikipedii.
źródło
potrace
czarno-białych ikon. Dziękuję za twój komentarz. Ale przepraszam, nie mam pojęcia, jak zachować kolory ... Ho! Mam pomysł: jeśli twój oryginalny obraz ma kilka kolorów (powiedzmy trzy unikalne kolory), możesz utworzyć trzy początkowe obrazy (po jednym dla każdego koloru). Następnie przekonwertuj na SVG. I na koniec scal trzy treści SVG w jednym pliku (SVG jest oparty na XML). Mam nadzieję, że to może pomóc ... Pozdrawiam ;-)convert
ipotrace
są dostępne na wielu platformach. Używam komputerów z systemem Linux. Właśnie użyłem tych poleceń wczoraj do stworzenia pliku SVG ze zeskanowanego papieru. Możesz zobaczyć wynik: cpp-frug.github.io/images/Cpp-President-2017.svg Proszę wyjaśnić więcej o swoim celu. Czego chcesz / zastanawiasz się? Jaka jest twoja potrzeba / życzenie? Pozdrawiam ;-)Png to styl grafiki bitmapowej, a SVG to projekt graficzny oparty na wektorze, który obsługuje bitmapy, więc nie jest tak, jakby przekształcił obraz w wektory, tylko obraz osadzony w formacie wektorowym. Możesz to zrobić za pomocą http://www.inkscape.org/, która jest bezpłatna. Osadziłby go, ale ma również silnik podobny do Live Trace, który spróbuje przekonwertować go na ścieżki, jeśli chcesz (używając potrace). Zobacz śledzenie na żywo w programie Adobe Illustrator (komercyjnym) jest przykładem:
http://graphicssoft.about.com/od/illustrator/ss/sflivetrace.htm
źródło
Możesz spojrzeć na potrace .
źródło
Łatwo
Jak zobaczysz, jeśli chcesz zrobić wiele innych sprytnych rzeczy .svg, możesz to zrobić również za pomocą Inkscape.
Spostrzeżenie nietechniczne: osobiście wolę tę metodę od „darmowych” ofert witryn, ponieważ oprócz często wymagającej rejestracji, przesyłając obraz, praktycznie we wszystkich aspektach, przekazuje się go właścicielowi witryny.
źródło
z programem Adobe Illustrator:
Otwórz Adobe Illustrator. Kliknij „Plik” i wybierz „Otwórz”, aby załadować plik .PNG do programu. Edytuj obraz w razie potrzeby przed zapisaniem go jako plik .SVG. Kliknij „Plik” i wybierz „Zapisz jako”. Utwórz nową nazwę pliku lub użyj istniejącej nazwy. Upewnij się, że wybrany typ pliku to SVG. Wybierz katalog i kliknij „Zapisz”, aby zapisać plik.
lub
konwerter online http://image.online-convert.com/convert-to-svg
Wolę AI, ponieważ możesz wprowadzić wszelkie potrzebne zmiany
powodzenia
źródło
Ku mojemu zdziwieniu, potrace, jak się okazuje, może przetwarzać tylko czarno-biały. Może to być dobre dla twojego przypadku użycia, ale niektórzy mogą uznać brak śledzenia kolorów za problematyczny.
Osobiście miałem satysfakcjonujące wyniki dzięki Vector Magic
Nadal nie jest idealny.
źródło
Uwaga dla osób korzystających Potrace i ImageMagick , przekształcając PNG obrazów z przezroczystością do PPM nie wydają się działać bardzo dobrze. Oto przykład, który używa
-flatten
flagiconvert
do obsługi tego:Innym interesującym zjawiskiem jest to, że jako format wejściowy można użyć PPM (256 * 3 kolory, tj. RGB), PGM (256 kolorów, tj. Skala szarości) lub PBM (2 kolory, tj. Tylko biały lub czarny). Z moich ograniczonych obserwacji wynika, że na obrazach, które są antyaliasingowane, PPM i PGM (które produkują identyczne SVG, o ile widzę) zmniejszają kolorowy obszar, a PBM rozszerza kolorowy obszar (choć tylko trochę). Prawdopodobnie jest to różnica między
pixel > (256 / 2)
testem apixel > 0
testem. Możesz przełączać się między tymi trzema, zmieniając rozszerzenie pliku, tj. następujące zastosowanie PBM :źródło
Możesz także spróbować http://image.online-convert.com/convert-to-svg
Zawsze używam tego do moich potrzeb.
źródło
Właśnie znalazłem to pytanie i odpowiedzi, gdy próbuję zrobić to samo! Nie chciałem korzystać z niektórych innych wymienionych narzędzi. (Nie chcę oddawać mojego e-maila i nie chcę płacić). Odkryłem, że Inkscape (v0.91) może zrobić całkiem dobrą robotę. Ten samouczek jest szybki i łatwy do zrozumienia.
To tak proste, jak wybranie mapy bitowej w Inkskape i Shift + Alt + B.
źródło
W zależności od tego , dlaczego chcesz przekonwertować z .png na .svg, może nie być konieczne przechodzenie przez ten problem. Konwersja plików .png (rastrowych) do .svg (wektorowych) może być uciążliwa, jeśli nie znasz dobrze dostępnych narzędzi lub nie jesteś z zawodu grafikiem.
Jeśli ktoś wyśle ci duży plik o wysokiej rozdzielczości (np. 1024x1024), możesz zmienić jego rozmiar do praktycznie dowolnego rozmiaru w GIMP. Często występują problemy ze zmianą rozmiaru obrazu, jeśli rozdzielczość (liczba pikseli na cal) jest zbyt niska. Aby to naprawić w GIMP, możesz:
File -> Open
: twój plik .pngImage -> Image Properties
: sprawdź Rozdzielczość i przestrzeń kolorów. Chcesz rozdzielczość około 300 ppi. W większości przypadków chcesz, aby przestrzeń kolorów była RGB.Image -> Mode
: ustaw na RGBImage -> Scale Image
: pozostaw rozmiar w spokoju, ustaw i rozdzielczość Y na 300 lub więcej. Hit Scale.Image -> Scale Image
: rozdzielczość powinna teraz wynosić 300 i możesz teraz zmienić rozmiar obrazu do niemal dowolnego rozmiaru.Nie tak proste jak zmiana rozmiaru pliku .svg, ale zdecydowanie łatwiejsze i szybsze niż próba konwersji pliku .png na plik .svg, jeśli masz już duży obraz w wysokiej rozdzielczości.
źródło
Zakładam, że chcesz do tego napisać oprogramowanie. Aby zrobić to naiwnie, wystarczy znaleźć linie i ustawić wektory. Aby zrobić to inteligentnie, próbujesz dopasować kształty do rysunku (dopasowanie modelu). Ponadto powinieneś spróbować ustalić regiony bitmapowe (regiony, których nie można modelować przez wstyd lub stosowanie tekstur. Nie polecam wybrania tej trasy, ponieważ zajmie to trochę czasu i będzie wymagało odrobiny wiedzy graficznej i komputerowej. Jednak dane wyjściowe będą znacznie skalowane i skalowane znacznie lepiej niż oryginalne dane wyjściowe.
źródło
http://online-converting.com/image/convert-to-svg/ działał dobrze przy konwersji do svg
źródło
potrace
w wierszu poleceń - zastanawiam się, czego strona używa wewnętrznie ...To narzędzie działa teraz bardzo dobrze.
http://www.mobilefish.com/services/image2svg/image2svg.php
źródło
Jeśli korzystasz z jakiegoś systemu Linux, imagemagick jest idealny. To znaczy
Działa to ze stertami różnych formatów.
W przypadku innych mediów, takich jak wideo i wykorzystanie audio (ffmpeg) , wiem jednak, że wyraźnie podałeś png do svg; Nadal jest związany z mediami.
Tylko wskazówka, jeśli chcesz przejrzeć wiele plików; pętla wykorzystująca podstawowe sztuczki z powłoką ..
To usuwa plik jpg i dodaje plik png, który mówi, że chcesz przekonwertować, co chcesz.
źródło