Saya memiliki banyak ikon SVG yang ingin saya gunakan untuk aplikasi saya yang akan dikembangkan di VB.Net 2010, dan karena tidak memiliki dukungan untuk menangani ikon SVG, saya perlu mengubah ikon-ikon itu menjadi PNG atau ICO, dengan lebih disukai resolusi keluaran. Saya telah menemukan alat baris perintah untuk Ubuntu yang disebut rsvgconvert
. Apakah kita punya alat seperti itu untuk Windows juga ??
command-line
conversion
icons
svg
Kushal
sumber
sumber
apt install imagemagick
ImageMagick tidak boleh langsung dikaitkan dengan sembarang tugas batch yang melibatkan gambar. Terutama dalam kasus ini di mana ImageMagick adalah solusi buruk untuk konversi SVG.
Lebih baik coba Inkscape di baris perintah:
inkscape in.svg --export-png=out.png
sumber
-z
opsi ini.Baris perintah tidak berfungsi di luar kotak, ditambah saya ingin 100 file dikonversi. Inilah cara saya membuatnya bekerja dengan windows 7:
instal inkscape - bukan yang portable!
salin semua file svg Anda dalam satu folder, mis. "C: \ svgs \" di sana:
Anda membuat
convert.bat
file dengan baris ini di dalamnya:(arahkan ke folder instalasi yang benar):
buka CMD sebagai admin! Untuk melakukannya, tekan tombol WIN, ketik cmd, klik kanan pada "cmd.exe" dan pilih "Run as administrator".
arahkan ke "C: \ svgs \" dan ketik
convert.bat
- Semua file svg akan dikonversi ke PNG.Gunakan Windows Explorer untuk mencari file PNG yang dikonversi. Di PC saya mereka berada di folder:
C:\Users\myname\AppData\Local\VirtualStore\Program Files (x86)\Inkscape\svgs
Semoga itu bisa membantu.
Karena resolusi untuk baris perintah hanya dapat ditetapkan sejauh yang saya bisa lihat, saya akhirnya menggunakan alat InkscapeBatch . Di sana saya bisa mengatur DPI untuk meningkatkan semua gambar secara relatif.
Anda perlu menentukan pengaturan yang benar atau itu tidak akan berfungsi. Inilah yang saya lakukan:
Setelah Anda menekan "Selesai", Anda perlu menekan tombol "Mulai batch converter ..." di bilah alat:
sumber
%%A
(sebagai nama file input). Juga, mengapa Anda menganggap itu hanya berfungsi dalam mode admin?--export-dpi=100
mana 100 adalah nilai th dari dpiInkscapeBatch melakukan pekerjaan pada Windows. Membutuhkan Inkscape .
sumber
Untuk konversi SVG ke PNG saya menemukan cairosvg ( https://cairosvg.org/ ) berkinerja lebih baik daripada ImageMagick. Langkah-langkah untuk menginstal dan menjalankan semua file di direktori Anda.
Buka shell python di direktori yang berisi file .svg Anda dan jalankan:
Ini juga akan memastikan Anda tidak menimpa file .svg asli Anda, tetapi akan tetap menggunakan nama yang sama. Anda kemudian dapat memindahkan semua file .png Anda ke direktori lain dengan:
sumber
Setelah bergulat dengan ini selama hampir 2 jam saya puas dengan Inkscape. Karena saya perlu mengonversi banyak file dalam berbagai resolusi, saya membuat skrip Powershell. Dengan 106 SVG, komputer saya membeku sekitar 5 detik, jadi berhati-hatilah saat menggunakan ini.
sumber
&
Operator memulai proses baru dan terus segera, sehingga script ini akan membuat sebagai banyak proses inkscape.exe baru Anda memiliki file svg. Ternyata ini membuat komputer Anda cukup lambat untuk sementara waktu.| Out-Null
di akhir baris yang dimulai dengan&
itu akan memaksanya untuk menjalankan perintah inkscape.exe satu per satu, yang bekerja jauh lebih baik bagi saya.Anda dapat menggunakan yang berikut ini di Bash / Ubuntu untuk Windows, di folder tempat Anda memiliki SVGs. Namun tampaknya ImageMagick pertama kali merasterisasi kemudian mengubah ukuran, yang menghasilkan artefak aneh ...
find -name "*.svg" -exec convert {} -background none -density 300 -resize 256x256 -define icon:auto-resize -alpha remove -colors 256 {}.ico \;
Lihat juga solusi berbasis Inscape yang tampaknya berfungsi dengan baik (dari utas lainnya, tautan hilang):
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;
sumber
find -name "*.svg" -exec inkscape {} -e {}.png \;
Meskipun saya lebih suka versi ini:ls | grep ".svg" | xargs -I file inkscape file -e file.png
karena file diproses secara alfabet - ini tidak terjadi, ketika menggunakanfind
ImageMagick tersedia untuk Windows dan dapat mengkonversi antara SVG dan PNG dan ICO (antara lain). Anda dapat mengatur ukuran dan atribut lainnya untuk file output.
sumber
Saya tidak dapat menemukan satu perintah yang berfungsi untuk menjalankan batch jadi saya membuatnya bekerja dengan membuat daftar file dan membuat serangkaian perintah. Instruksi ini harus bekerja untuk semua versi Windows. Semua instruksi pengetikan mengecualikan kutipan dan memasukkan semuanya di antaranya.
Untuk melakukan ini, Anda akan memerlukan Inkscape, MS Excel atau editor spreadsheet yang sebanding dan generator daftar. Ada generator daftar freeware kecil yang hebat di sini: https://www.portablefreeware.com/?id=1171
Jika Anda telah melakukan ini dengan benar, Anda harus memiliki satu baris untuk setiap nama file yang terlihat seperti ini: | inkscape C: \ SVG \ | Filename1.svg | --export-png = C: \ PNG \ | Filename1.png |
Semoga itu membuat hidup seseorang lebih mudah. James
sumber
Jawaban Kai dekat, tetapi tidak berhasil untuk saya. Namun, dengan sedikit perubahan, ini bekerja tanpa cacat pertama kali:
convert.bat
convert.bat
di editor teks / kode favorit Anda dan masukkan yang berikut ini:FOR %%A IN (*.svg) DO "C:\Program Files\Inkscape\inkscape.exe" %%A --export-png=%%A.png
(Perhatikan bahwa
inkscape.exe
lokasi harus sesuai lokasi program executable pada PC Anda, dan yang kedua sebelum--export-png
adalah%%A
- yang file SVG makhluk dikonversi)convert.bat
untuk menjalankan, dan itu akan menggemakan hasil konversi.Perhatikan bahwa Anda mungkin perlu me-refresh folder Windows Anda untuk melihat file baru, tetapi semuanya harus dibuat di lokasi yang sama dengan SVG asli.
sumber
Tidak dapat mengaktifkan imagemagick atau inkscape untuk saya karena suatu alasan. Saya hanya punya 12 file untuk dikonversi yang baru saja menggunakan situs ini secara manual: http://svgtopng.com/ berhasil.
sumber
Berikut ini adalah solusi berbasis ImageMagick untuk mengonversi semua file svg di direktori tertentu ke file ico:
Penjelasan:
mogrify
: Sukaconvert
, tetapi memungkinkan Anda untuk mengolah banyak file.-format ico
: Format file target kami. Membuat.ico
file alih-alih menimpa file asli (seperti yang dilakukan mogrif secara default).-density 1200
: Karena kita tidak dapat menentukan ukuran piksel target yang harus di-ImageMagick oleh Rasterize SVG (pertama-tama akan melakukan rasterisasi dengan kepadatan default dan kemudian skala), kami merasterisasi SVG dengan resolusi sangat tinggi (1200dpi), untuk memastikan bahwa gambar tersebut akan downscaled untuk 256x256 bukan upscaled.-background transparent
: Latar belakang akan dibuat transparan.-trim
: Hapus batas yang ada di sekitar gambar.-resize 256x256
: Skala gambar, memastikan bahwa sisi terpanjang memiliki 256px, menjaga aspek rasio.-gravity center -extent 256x256
: Perbesar kanvas, pastikan sisi pendeknya memiliki 256px juga. Gambar yang ada selaras tengah. Ini diperlukan karena kami memerlukan gambar persegi sebagai dasar untuk file ICO.-define icon:auto-resize
: Sertakan tidak hanya gambar 256x256 tetapi juga semua resolusi downscaled yang disarankan (misalnya 32x32) dalam file ICO.sumber
Sebagian besar jawaban yang diberikan di sini mengabaikan ukuran pertanyaan yang diinginkan . Saya tidak bisa mendapatkan hasil yang memuaskan menggunakan
convert
ketika "meningkatkan" SVG.inkscape
melakukan pekerjaan yang lebih baik dan juga menjaga transparansi latar belakang.Tergantung pada kasus penggunaan Anda, gunakan salah satu opsi berikut:
inscape in.svg -d 300 -e out.png
inscape in.svg -w 800 -e output.png
inscape in.svg -h 600 -e output.png
Perhatikan bahwa menentukan lebar dan tinggi tidak mempertahankan rasio aspek.
Untuk mengonversi banyak file sekaligus, sesuaikan berikut ini dengan use case Anda (dalam
bash
atau yang kompatibel):sumber