Le immagini SVG convertono in batch alla dimensione desiderata PNG o ICO

Ho un sacco di icone SVG che vorrei usare per la mia applicazione da sviluppare in VB.Net 2010 e poiché non ha alcun supporto per gestire le icone di SVG, devo convertire queste icone in PNG o ICO, con preferite risoluzione dell'output. Ho trovato questo strumento di row di command per Ubuntu chiamato rsvgconvert . Abbiamo un tale strumento per Windows pure?

ImageMagick dispone di uno strumento di row di command disponibile per Linux e Windows (e altri). Lo strumento converter è convenientemente chiamato "convert". Ecco alcune documentazioni sull'utilizzo .

E qui è ansible get un installatore di Windows .

ImageMagick non dovrebbe associarsi immediatamente a qualsiasi attività batch che coinvolga immagini. Soprattutto in questo caso in cui ImageMagick è una soluzione scadente per la conversione SVG.

Prova meglio Inkscape sulla row di command:

inkscape in.svg --export-png=out.png

La row di command non funzionava fuori dalla casella, e ho voluto che 100 file venissero convertiti. Ecco come ho fatto funzionare con windows 7:

  1. installare inkscape – non quello porttile!

  2. copiare tutti i file svg in una cartella, ad esempio "C: \ svgs \":

  3. si crea un file convert.bat con questa row all'interno:

     FOR %%A IN (*.svg) DO "C:\Program Files (x86)\Inkscape\inkscape.exe" --export-png=%%A.png 

    (puntare sulla cartella corretta dell'installazione):

  4. apri il CMD come admin! Per farlo, premere il tasto WIN, digitare cmd, fare clic destro su "cmd.exe" e select "Esegui come amministratore".

  5. vai al tuo "C: \ svgs \" e digita convert.bat – Tutti i file svg verranno convertiti in PNG.

  6. Utilizzare Esplora risorse per cercare i file PNG convertiti. Sul mio PC erano nella cartella: C:\Users\myname\AppData\Local\VirtualStore\Program Files (x86)\Inkscape\svgs

Spero possa aiutare.


Poiché la risoluzione per la row di command potrebbe essere impostata solo per quanto ansible, ho finito utilizzando lo strumento InkscapeBatch . Lì posso impostare il DPI per aumentare tutte le immagini relativamente.

È necessario specificare le impostazioni corrette o non functionrà. Ecco quello che ho fatto:

immettere qui la descrizione dell'immagine

immettere qui la descrizione dell'immagine

Dopo aver premuto "Finish", è necessario premere il button "Start batch converter …" nella barra degli strumenti:

immettere qui la descrizione dell'immagine

InkscapeBatch fa il lavoro su Windows. Richiede Inkscape .

Dopo aver lottato con questo per quasi 2 ore mi sono stabilito con Inkscape. Dal momento che ho dovuto convertire un gruppo di file in diverse risoluzioni, ho creato uno script Powershell. Con 106 SVG il mio computer si è congelato per circa 5 secondi, quindi fai attenzione quando usi questo.

 # ENTER THE FULL PATH TO THE INKSCAPE EXECUTABLE $inkscapeExe = "C:\Program Files\Inkscape\inkscape.exe" # ENTER THE PATH TO THE FOLDER CONTAINING THE SVGs $svgFolder = "C:\Images\SVG" # ENTER THE DESIRED WIDTH $width = 120 # ENTER THE DESIRED HEIGHT $height = 120 $svgFiles = Get-ChildItem $svgFolder -Filter *.svg foreach ($svgFile in $svgFiles) { $inputParam = $svgFile.FullName $outputParam = "--export-png=" + $svgFile.FullName + "-" + $width + "x" + $height + ".png" $widthParam = "-w" + $width $heightParam = "-h" + $height & $inkscapeExe $inputParam $outputParam $widthParam $heightParam } 

ImageMagick è disponibile per Windows e può convertire tra SVG e PNG e ICO (tra gli altri). È ansible impostare size e altri attributi per il file di output.

Non sono riuscito a trovare un singolo command che ha funzionato per eseguire un batch, così ho ottenuto che funzionasse generando un elenco di file e creando una serie di comandi. Queste istruzioni dovrebbero funzionare per tutte le versioni di Windows. Tutte le istruzioni di digitazione escludono le citazioni e includono tutto tra di essi.

Per fare questo occorre Inkscape, MS Excel o editor di fogli di calcolo comparabili e un generatore di liste. C'è un ottimo generatore di elenco freeware qui: https://www.portblefreeware.com/?id=1171

  • Hardlink, copia o sposta tutti i file svg in una cartella.
  • Generare un elenco di file di quella cartella e esportre in csv.
  • Aprire il csv in Excel e eliminare tutte le colonne tranne la colonna del nome file. Eliminare anche le intestazioni di colonna come il path [] e il text di riepilogo in basso.
  • Se i nomi di file non sono già nella seconda colonna, tagliarli e incollarli.
  • Nella prima cella della prima colonna digitare inkscape seguita da uno spazio e il path della cartella in cui i file svg includono un backslash a trascinamento (ad esempio "inkscape C: \ SVG \"). Quindi copia questa cella, seleziona tutte le celle sottostanti che precedono un nome di file e incollano in modo che tutti abbiano lo stesso text.
  • Nella terza colonna digitate –export-png = nella prima cella seguita dalla cartella di destinazione che desideri salvarli. Ho usato la stessa cartella. Perché la syntax sia corretta, assicuratevi di aggiungere uno spazio all'inizio, ma tenga insieme il resto del text (ad es. "–export-png = C: \ PNG \"). Copia e incolla questo per tutte le righe come la prima colonna
  • Copiare tutta la seconda colonna e incollarla nella quarta colonna. Con quella quarta colonna selezionata Premere Ctrl + H (Trova & Sostituisci). Nel field di ricerca, digitare ".svg" Nel field di sostituzione digitare ".png", quindi select Sostituisci tutto.

Se l'hai fatto correttamente, dovresti avere una row per each nome di file che ha l'aspetto seguente: | inkscape C: \ SVG \ | Filename1.svg | –export-png = C: \ png \ | Filename1.png |

  • Nella prima cella della quinta colonna digitare "= concatenare (a2, b2, c2, d2)". Ciò presuppone che la colonna di intestazione non sia stata eliminata. I numbers delle cellule tra parentesi devono essere d'accordo con il numero della row corrente. Se il primo nome di file è in B2, la formula sopra è esatta. Altrimenti corretto, i nomi delle celle nelle parentesi quadre per corrispondere alla prima row del nome del file (ad esempio a1, b1, c1 …)
  • Copia e incolla questa cella per riempire tutti sotto di essa come le colonne 1 e 3.
  • Ora copia tutta la quinta colonna e utilizza Paste Special> Values ​​per incollare il text prodotto dalle formule nella sesta colonna. Questa sesta colonna è il tuo denaro sparato. Copia tutta la sesta colonna, Apri block note e incolla l'ultima colonna in essa. Se lo hai fatto correttamente, avrai una row di command per convertire ciascuno dei tuoi file svg in png.
  • Salvare il file Notepad nella directory Inkscape come un file batch. Quando si apre la window di salvataggio, cambiare Salva come tipo in "Tutti i file" e salvarlo come un file .bat (ad esempio "C: \ Programmi \ Inkscape \ SVGBatch.bat"
  • Tutto quello che resta da fare è entrare in quella cartella e fare doppio clic sul file batch appena salvato. Dovrebbe aprire un prompt dei comandi e convertire tutti i file.

Speranza che rende la vita di qualcuno più facile. James

La risposta di Kai è vicina, ma non ha funzionato per me. Tuttavia, con un paio di piccoli tweaks, questo ha funzionato per la prima volta perfettamente:

  1. Copiare gli SVG in una posizione utile
  2. Creare un file di text nella stessa cartella e rinominarlo convert.bat
  3. Apri convert.bat nel tuo editor di text / codice preferito e immetti quanto segue:

FOR %%A IN (*.svg) DO "C:\Program Files\Inkscape\inkscape.exe" %%A --export-png=%%A.png

(Si noti che la posizione inkscape.exe dovrebbe corrispondere al path del programma eseguibile sul PC e il secondo prima che il file --export-png sia %%A – il file SVG viene convertito)

  1. Fare doppio clic su convert.bat per eseguire e dovrebbe esporre i risultati delle conversioni.

Si noti che potrebbe essere necessario aggiornare la cartella di Windows per visualizzare i nuovi file, ma dovrebbero essere tutti creati nella stessa posizione degli SVG originali.