Mam kilka ikon SVG, których chciałbym użyć do opracowania mojej aplikacji w VB.Net 2010, a ponieważ nie obsługuje ona ikon SVG, muszę przekonwertować te ikony na PNG lub ICO, z preferowanym rozdzielczość wyjściowa. Znalazłem takie narzędzie wiersza polecenia dla Ubuntu o nazwie rsvgconvert
. Czy mamy też takie narzędzie dla systemu Windows?
command-line
conversion
icons
svg
Kushal
źródło
źródło
apt install imagemagick
ImageMagick nie powinien natychmiast kojarzyć się z żadnym zadaniem wsadowym obejmującym obrazy. Szczególnie w tym przypadku, gdy ImageMagick jest złym rozwiązaniem do konwersji SVG.
Lepiej wypróbuj Inkscape w wierszu poleceń:
inkscape in.svg --export-png=out.png
źródło
-z
opcji.Wiersz poleceń nie działał od razu, a ponadto chciałem przekonwertować 100 plików. Oto jak sprawiłem, że działał z Windows 7:
zainstaluj inkscape - nie przenośny!
skopiuj wszystkie pliki svg do jednego folderu, np. „C: \ svgs \” tam:
tworzysz
convert.bat
plik z tą linią wewnątrz:(wskaż właściwy folder instalacji):
otwórz CMD jako administrator! Aby to zrobić, naciśnij klawisz WIN, wpisz cmd, kliknij prawym przyciskiem myszy „cmd.exe” i wybierz „Uruchom jako administrator”.
przejdź do „C: \ svgs” i wpisz
convert.bat
- Wszystkie pliki svg zostaną przekonwertowane na pliki PNG.Użyj Eksploratora Windows, aby wyszukać przekonwertowane pliki PNG. Na moim komputerze były w folderze:
C:\Users\myname\AppData\Local\VirtualStore\Program Files (x86)\Inkscape\svgs
Mam nadzieję, że to pomaga.
Ponieważ rozdzielczość wiersza poleceń można było ustawić tylko tak daleko, jak mogłem zobaczyć, skończyło się na użyciu narzędzia InkscapeBatch . Tam mogłem ustawić DPI, aby względnie zwiększyć wszystkie obrazy.
Musisz określić prawidłowe ustawienia, w przeciwnym razie nie będzie działać. Oto co zrobiłem:
Po naciśnięciu przycisku „Zakończ” należy nacisnąć przycisk „Uruchom konwerter wsadowy ...” na pasku narzędzi:
źródło
%%A
(jako wejściowej nazwy pliku). Ponadto, dlaczego zakładasz, że powinien działać tylko w trybie administratora?--export-dpi=100
gdzie 100 jest wartością dpiInkscapeBatch wykonuje pracę w systemie Windows. Wymaga Inkscape .
źródło
W przypadku konwersji SVG na PNG stwierdziłem, że cairosvg ( https://cairosvg.org/ ) działa lepiej niż ImageMagick. Kroki instalacji i uruchamiania wszystkich plików w katalogu.
Otwórz powłokę python w katalogu zawierającym pliki .svg i uruchom:
Zapewni to również, że nie zastąpisz oryginalnych plików .svg, ale zachowa tę samą nazwę. Następnie możesz przenieść wszystkie pliki .png do innego katalogu za pomocą:
źródło
Po zmaganiach z tym przez prawie 2 godziny zamieszkałem z Inkscape. Ponieważ musiałem przekonwertować pakiet plików w wielu różnych rozdzielczościach, stworzyłem skrypt Powershell. Przy 106 plikach SVG mój komputer zamarł na około 5 sekund, więc zachowaj ostrożność podczas korzystania z niego.
źródło
&
Operator uruchamia nowy proces i trwa od razu, więc ten skrypt utworzyć wiele nowych procesów inkscape.exe jak masz pliki SVG. Okazuje się, że powoduje to, że komputer przez pewien czas jest dość wolny.| Out-Null
na końcu linii, która zaczyna się od&
niej, zmusi ją do uruchomienia polecenia inkscape.exe pojedynczo, co dla mnie działa znacznie lepiej.Możesz użyć następujących w Bash / Ubuntu dla Windows, w folderze, w którym znajdują się pliki SVG. Wydaje się jednak, że ImageMagick najpierw rasteryzuje, a następnie zmienia rozmiar, co powoduje dziwne artefakty…
find -name "*.svg" -exec convert {} -background none -density 300 -resize 256x256 -define icon:auto-resize -alpha remove -colors 256 {}.ico \;
Zobacz także rozwiązanie oparte na Inscape, które wydaje się działać dobrze (z innego wątku, utracony link):
mkdir temp; declare -a res=(16 24 32 48 64 128 256); for f in *.svg; do for r in "${res[@]}"; do inkscape -z -e temp/${f}${r}.png -w $r -h $r $f; done; resm=( "${res[@]/#/temp/$f}" ); resm=( "${resm[@]/%/.png}" ); convert "${resm[@]}" ${f%%.*}.ico; done; rm -rf temp;
źródło
find -name "*.svg" -exec inkscape {} -e {}.png \;
Chociaż wolę tę wersję:ls | grep ".svg" | xargs -I file inkscape file -e file.png
ponieważ pliki są przetwarzane alfabetycznie - nie jest tak w przypadku używaniafind
ImageMagick jest dostępny dla systemu Windows i może konwertować między SVG i PNG i ICO (między innymi). Możesz ustawić rozmiar i inne atrybuty pliku wyjściowego.
źródło
Nie mogłem znaleźć ani jednego polecenia, które działałoby, aby uruchomić partię, więc zacząłem działać, generując listę plików i tworząc serię poleceń. Te instrukcje powinny działać dla wszystkich wersji systemu Windows. Wszystkie instrukcje pisania wykluczają cytaty i zawierają wszystko między nimi.
Aby to zrobić, potrzebujesz Inkscape, MS Excel lub porównywalnego edytora arkuszy kalkulacyjnych i generatora list. Jest tutaj świetny mały generator list darmowych: https://www.portablefreeware.com/?id=1171
Jeśli zrobiłeś to poprawnie, powinieneś mieć jeden wiersz dla każdej nazwy pliku, która wygląda następująco: | inkscape C: \ SVG \ | Nazwa pliku1.svg | --export-png = C: \ PNG \ | Nazwa pliku1.png |
Mam nadzieję, że czyjeś życie jest łatwiejsze. James
źródło
Odpowiedź Kai jest bliska, ale dla mnie nie zadziałała. Jednak z kilkoma drobnymi poprawkami zadziałało to bezbłędnie za pierwszym razem:
convert.bat
convert.bat
w swoim ulubionym edytorze tekstu / kodu i wprowadź następujące dane:FOR %%A IN (*.svg) DO "C:\Program Files\Inkscape\inkscape.exe" %%A --export-png=%%A.png
(Należy pamiętać, że
inkscape.exe
lokalizacja powinna być zgodna z lokalizacją programu wykonywalnego na twoim komputerze; a przedtem--export-png
jest to%%A
- plik SVG jest konwertowany)convert.bat
aby uruchomić. Powinien on odzwierciedlać wyniki konwersji.Pamiętaj, że może być konieczne odświeżenie folderu Windows, aby zobaczyć nowe pliki, ale wszystkie powinny zostać utworzone w tej samej lokalizacji, co oryginalne pliki SVG.
źródło
Z jakiegoś powodu nie mogłem sprawić, by imagemagick lub inkscape działały dla mnie. Miałem tylko 12 plików do konwersji, właśnie korzystałem z tej strony ręcznie: http://svgtopng.com/ działało.
źródło
Oto rozwiązanie oparte na ImageMagick do konwersji wszystkich plików svg w danym katalogu na pliki ico:
Wyjaśnienie:
mogrify
: Lubięconvert
, ale pozwala na przetwarzanie wsadowe wielu plików.-format ico
: Nasz format pliku docelowego. Tworzy.ico
pliki zamiast nadpisywania oryginalnego pliku (tak jak zrobiłby to domyślnie mogrify).-density 1200
: Ponieważ nie możemy określić docelowego rozmiaru piksela, do którego ImageMagick powinien rasteryzować SVG (najpierw rasteryzowałby z domyślną gęstością, a następnie skalował), rasteryzujemy SVG z niesamowicie wysoką rozdzielczością (1200 dpi), aby zapewnić, że obraz zostanie zmniejszona do 256 x 256 zamiast w górę.-background transparent
: Tło będzie renderowane jako przezroczyste.-trim
: Usuń istniejące obramowanie wokół obrazu.-resize 256x256
: Przeskaluj obraz, upewniając się, że najdłuższy bok ma 256 pikseli, zachowując proporcje.-gravity center -extent 256x256
: Powiększ płótno, upewniając się, że krótki bok ma również 256 pikseli. Istniejący obraz jest wyśrodkowany. Jest to konieczne, ponieważ potrzebujemy kwadratowego obrazu jako podstawy pliku ICO.-define icon:auto-resize
: Dołącz do pliku ICO nie tylko obraz 256 x 256, ale także wszystkie zalecane rozdzielczości zmniejszone (np. 32 x 32).źródło
Większość podanych tutaj odpowiedzi ignoruje część pytania o pożądanej wielkości . Nie udało mi się uzyskać satysfakcjonujących wyników przy
convert
„skalowaniu” pliku SVG.inkscape
wykonuje lepszą pracę, a także zachowuje przezroczystość tła.W zależności od przypadku użycia użyj jednej z następujących opcji:
inscape in.svg -d 300 -e out.png
inscape in.svg -w 800 -e output.png
inscape in.svg -h 600 -e output.png
Pamiętaj, że określenie zarówno szerokości, jak i wysokości nie zachowuje proporcji.
Aby przekonwertować wiele plików jednocześnie, dostosuj następujące przypadki do swojego przypadku użycia (w
bash
lub zgodny):źródło