Plik SVG ma następujące właściwości, które określają jego rozmiar:
width="146.91299pt"
height="78.079002pt"
viewBox="0 0 146.913 78.079"
Chciałbym przeskalować dany plik SVG do z za 400pt
pomocą wiersza poleceń bez przerywania proporcji. Oznacza to, że powyższe trzy wartości muszą zostać poprawnie zmienione, a wszystkie punkty w poniższym kodzie svg. Nie chcę zmieniać tylko rozmiaru płótna, ale cały rozmiar obrazu svg. I nie chcę tego robić z GUI / ręcznie, ale chcę to robić z CLI.
Jak mogę automatycznie przeskalować plik SVG za pomocą wiersza polecenia do określonej szerokości?
Powód: Podgląd Wikipedii wygląda źle, jeśli obraz jest zbyt mały. Zobacz ten obraz jako przykład.
Jak zrobiłbym to zadanie za pomocą Inkscape-GUI
- Shift + Ctrl + M (Przekształć)
- Skala (zaznacz „skaluj proporcjonalnie”)
- Wpisz szerokość
- Shift + Ctrl + D (właściwości dokumentu)
- Dopasuj stronę do wyboru
Teraz chcę to zrobić za pomocą automatycznego interfejsu CLI.
Nawiasem mówiąc, po prostu zastosowano Inkscape
<g transform="matrix(1.6838397,0,0,1.6838397,-3.3543029,-3.3542794)"
id="surface0">
do całego obrazu.
źródło
width
,height
iviewBox
wartości do czegoś podobnegowidth="100%" height="100%" viewBox="0 0 400 212.58569"
.sed
w odpowiedzi @ terdon). Jednym z problemów, na które możesz natknąć się, jest to, że wartości mogą być inne w przypadku innych plików .svg, z którymi chcesz zrobić to samo.Odpowiedzi:
rsvg-convert
zlibrsvg2-bin
pakietu można zmienić rozmiar pliku svg.Zobacz tę odpowiedź, aby uzyskać pełne instrukcje.
źródło
rsvg-convert -a -w 500 -f svg Vector-triangle-inequality.svg -o Result.svg
pracował Ale rsvg-convert wydaje się robić coś więcej niż tylko zmianę rozmiaru.rsvg-convert --help
nie dostarcza żadnych wskazówek.Jeśli chcesz tylko zmienić jeden obraz, otwórz go w edytorze tekstu (na przykład emacs) i zmień szerokość.
Dla geekierów, podejście tylko CLI, użyj sed:
Nie spowoduje to jednak skalowania obrazu, a jedynie jego szerokość.
Być może lepszym sposobem, ale z pewnością takim, który można uruchomić w trybie wsadowym dla wielu obrazów, jest użycie programu inkscape z wiersza poleceń:
W przypadku wielu plików (zakładając, że chcesz, aby wszystkie miały tę samą szerokość), wykonaj następujące czynności. Wymaga konwersji na png i zakłada, że w nazwach plików nie ma spacji:
Konwersja ImageMagick była moim pierwszym wyborem, ale wydaje się, że psuje się podczas skalowania plików svg.
źródło