Jestem na Linuksie i chciałbym wziąć plik SVG i upiec go w pliku PNG o określonej rozdzielczości (skalowanie). Czy istnieje sposób, aby to zrobić szybko i skutecznie z wiersza poleceń?
Szukam czegoś takiego:
svg2png --width 128 --height 128 input.svg output.png
Czy jest na to narzędzie?
Odpowiedzi:
Użyj konwersji ImageMagick :
Jeśli wejściowy rozmiar obszaru roboczego jest mniejszy niż podany rozmiar, spowoduje to zwiększenie skali wyjścia bez ponownego próbkowania. Aby uzyskać wynik wyższej jakości, dodaj
-density
parametr:ImageMagick rastruje obrazy wektorowe do ich rozdzielczości obszaru roboczego do domyślnej gęstości 72 dpi.
Aby zwiększyć skalę z odpowiednim próbkowaniem, możesz określić zbyt wysoką wartość, na przykład 500 dpi w powyższej próbce.
Używanie zbyt dużej gęstości rastrowej może stanowić problem z wydajnością w przypadku dużych rozmiarów płótna. Najniższa i idealna gęstość rastra to:
raster_density = raster_size / original_size * original_density
Ta idealna gęstość rastra wyśle obraz bezpośrednio do oczekiwanego rozmiaru (nie jest
-resize
potrzebny). Ponieważ jednak mogą wystąpić przybliżenia liczb zmiennoprzecinkowych, dla uzyskania idealnego piksela zalecana jest nieco wyższa wartość i zmiana rozmiaru.Możesz uzyskać oryginalny rozmiar i gęstość za pomocą ucieczek procentowych ImageMagick :
Pamiętaj, że ImageMagick nie obsługuje pełnej specyfikacji SVG. Jeśli masz problemy z nieprawidłowo renderowanymi kształtami, zapoznaj się z tym wątkiem na temat wybierania mechanizmu renderującego ImageMagick SVG .
źródło
rsvg
odpowiedź poniżej, ale naprawdę nadszedł czas, aby zacząć korzystać z ImageMagick.convert: unable to read font
(null) '@ error / annotate.c / RenderFreetype / 1153. Błędy, które rozwiązałembrew install gs
, ale nawet gdy konwersja przebiegła poprawnie, powstały obraz jest śmieci.-background transparent
, w przeciwnym razie konwersja wykorzystuje białe tło.inkscape in.svg --export-png=out.png
(przykład z superuser.com/a/493028/316154 )Zarówno
rsvg
iinkscape
mogą:I:
źródło