🢂Konwersja obrazów z formatu PNG do SVG w bashu

Funkcje które konwertują wszystkie pliki w katalogu z PNG do SVG.

Podane poniżej funkcje służą temu samemu celowi, ale korzystają z różnych narzędzi, co może wpływać na wynik końcowy i jakość przekształconych obrazów. Najczęściej używam pod konsolą konwersji za pomocą potrace. Warto zaznaczyć, że convert i potrace są częścią ImageMagick, podczas gdy Inkscape to osobne narzędzie graficzne i wymaga Xów.

Konwersja za pomocą potrace

  • convert "$f_png" "$f.pnm": Konwertuje plik PNG na PNM (format pośredni).

  • potrace "$f.pnm" -s -o "$f.svg": Konwertuje plik PNM na SVG.

  • Wklej ten kod w katalogu w którym są pliki PNG

( set -x ; for f_png in *.png ; do f="${f_png%.png}" ; convert "$f_png" "$f.pnm" && potrace "$f.pnm" -s -o "$f.svg" && rm -f "$f.pnm"  ; done)
  • lub dodaj do ~/.bash_aliases
alias png2svg='( set -x ; for f_png in *.png ; do f="${f_png%.png}" ; convert "$f_png" "$f.pnm" && potrace "$f.pnm" -s -o "$f.svg" && rm -f "$f.pnm"  ; done)'
  • Tak wygląda ten kod sformatowany
(
    set -x
    for f_png in *.png; do
        f="${f_png%.png}"
        convert "$f_png" "$f.pnm" &&
        potrace "$f.pnm" -s -o "$f.svg" &&
        rm -f "$f.pnm"
    done
)

Konwersja za pomocą inkscape

  • inkscape "$f_png" --export-plain-svg="$f.svg" -z Wykorzystuje Inkscape do bezpośredniej konwersji pliku PNG na SVG.

  • Wklej to w katalogu

( set -x ; for f_png in *.png ; do f="${f_png%.png}" ;  inkscape "$f_png" --export-plain-svg="$f.svg" -z; done)
  • ~/.bash_aliases
alias png2svgInc='( set -x ; for f_png in *.png ; do f="${f_png%.png}" ;  inkscape "$f_png" --export-plain-svg="$f.svg" -z; done)'