J'ai un tas d'icônes SVG que j'aimerais utiliser pour que mon application soit développée dans VB.Net 2010, et comme il n'a pas de support pour gérer les icônes SVG, j'ai besoin de convertir ces icônes en PNG ou ICO, avec préférence résolution de sortie. J'ai trouvé un tel outil de ligne de commande pour Ubuntu appelé rsvgconvert
. Avons-nous également un tel outil pour Windows?
command-line
conversion
icons
svg
Kushal
la source
la source
apt install imagemagick
ImageMagick ne doit pas s'associer immédiatement à n'importe quelle tâche par lots impliquant des images. Surtout dans ce cas où ImageMagick est une mauvaise solution pour la conversion SVG.
Mieux vaut essayer Inkscape en ligne de commande:
inkscape in.svg --export-png=out.png
la source
-z
option.La ligne de commande n'a pas fonctionné, et je voulais que 100 fichiers soient convertis. Voici comment je l'ai fait fonctionner avec Windows 7:
installez inkscape - pas le portable!
copiez tous vos fichiers svg dans un dossier, par exemple "C: \ svgs \" là:
vous créez un
convert.bat
fichier avec cette ligne à l'intérieur:(pointez sur le bon dossier de votre installation):
ouvrez le CMD en tant qu'administrateur! Pour ce faire, appuyez sur la touche WIN, tapez cmd, faites un clic droit sur "cmd.exe" et sélectionnez "Exécuter en tant qu'administrateur".
accédez à votre "C: \ svgs \" et tapez
convert.bat
- Tous les fichiers svg seront convertis en PNG.Utilisez l'Explorateur Windows pour rechercher les fichiers PNG convertis. Sur mon PC, ils étaient dans le dossier:
C:\Users\myname\AppData\Local\VirtualStore\Program Files (x86)\Inkscape\svgs
J'espère que ça t'as aidé.
Comme la résolution de la ligne de commande ne pouvait être fixée que pour autant que je puisse voir, j'ai fini par utiliser l' outil InkscapeBatch . Là, je pouvais régler le DPI pour augmenter toutes les images relativement.
Vous devez spécifier les paramètres corrects ou cela ne fonctionnera pas. Voici ce que j'ai fait:
Après avoir cliqué sur "Terminer", vous devez appuyer sur le bouton "Démarrer le convertisseur de lots ..." dans la barre d'outils:
la source
%%A
(comme nom de fichier d'entrée). Aussi, pourquoi supposez-vous que cela ne devrait fonctionner qu'en mode administrateur?--export-dpi=100
où 100 est la valeur du dpiInkscapeBatch fait le travail sous Windows. Nécessite Inkscape .
la source
Pour la conversion SVG en PNG, j'ai trouvé que cairosvg ( https://cairosvg.org/ ) fonctionne mieux que ImageMagick. Étapes d'installation et d'exécution sur tous les fichiers de votre répertoire.
Ouvrez un shell python dans le répertoire qui contient vos fichiers .svg et exécutez:
Cela vous permettra également de ne pas écraser vos fichiers .svg d'origine, mais de conserver le même nom. Vous pouvez ensuite déplacer tous vos fichiers .png vers un autre répertoire avec:
la source
Après avoir lutté avec cela pendant près de 2 heures, je me suis installé avec Inkscape. Depuis que j'avais besoin de convertir par lots un tas de fichiers dans de nombreuses résolutions différentes, j'ai créé un script Powershell. Avec 106 SVG, mon ordinateur s'est bloqué pendant environ 5 secondes, alors soyez prudent lorsque vous l'utilisez.
la source
&
opérateur démarre un nouveau processus et continue immédiatement, donc ce script créera autant de nouveaux processus inkscape.exe que vous avez de fichiers svg. Il s'avère que cela rend votre ordinateur assez lent pendant un certain temps.| Out-Null
à la fin de la ligne qui commence par&
cela le forcera à exécuter la commande inkscape.exe une à la fois, ce qui fonctionne beaucoup mieux pour moi.Vous pouvez utiliser ce qui suit dans Bash / Ubuntu pour Windows, dans le dossier où vous avez les SVG. Il semble cependant qu'ImageMagick rasterise d'abord puis redimensionne, ce qui se traduit par d'étranges artefacts…
find -name "*.svg" -exec convert {} -background none -density 300 -resize 256x256 -define icon:auto-resize -alpha remove -colors 256 {}.ico \;
Voir également la solution basée sur Inscape qui semble bien fonctionner (depuis un autre thread, lien perdu):
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;
la source
find -name "*.svg" -exec inkscape {} -e {}.png \;
Bien que je préfère cette version:ls | grep ".svg" | xargs -I file inkscape file -e file.png
parce que les fichiers sont traités par ordre alphabétique - ce n'est pas le cas lors de l'utilisationfind
ImageMagick est disponible pour Windows et peut convertir entre SVG et PNG et ICO (entre autres). Vous pouvez définir la taille et d'autres attributs pour le fichier de sortie.
la source
Je ne pouvais pas trouver une seule commande qui fonctionnait pour exécuter un lot, donc je l'ai fait fonctionner en générant une liste de fichiers et en créant une série de commandes. Ces instructions devraient fonctionner pour toutes les versions de Windows. Toutes les instructions de frappe excluent les citations et incluent tout le reste.
Pour ce faire, vous aurez besoin d'Inkscape, de MS Excel ou d'un éditeur de feuille de calcul comparable et d'un générateur de liste. Il y a un excellent petit générateur de liste de freeware ici: https://www.portablefreeware.com/?id=1171
Si vous l'avez fait correctement, vous devez avoir une ligne pour chaque nom de fichier qui ressemble à ceci: | inkscape C: \ SVG \ | Filename1.svg | --export-png = C: \ PNG \ | Filename1.png |
J'espère que cela rend la vie de quelqu'un plus facile. James
la source
La réponse de Kai est proche, mais n'a pas fonctionné pour moi. Cependant, avec quelques ajustements légers, cela a fonctionné parfaitement la première fois:
convert.bat
convert.bat
dans votre éditeur de texte / code préféré et entrez ce qui suit:FOR %%A IN (*.svg) DO "C:\Program Files\Inkscape\inkscape.exe" %%A --export-png=%%A.png
(Notez que l'
inkscape.exe
emplacement doit correspondre à l'emplacement du programme exécutable sur votre PC; et le second avant--export-png
est%%A
- c'est le fichier SVG en cours de conversion)convert.bat
pour exécuter et cela devrait faire écho aux résultats des conversions.Notez que vous devrez peut-être actualiser votre dossier Windows pour voir les nouveaux fichiers, mais ils devraient tous avoir été créés au même emplacement que les SVG d'origine.
la source
Impossible de faire fonctionner imagemagick ou inkscape pour moi pour une raison quelconque. Je n'avais que 12 fichiers à convertir, je viens d'utiliser ce site manuellement: http://svgtopng.com/ a fonctionné un régal.
la source
Voici une solution basée sur ImageMagick pour convertir tous les fichiers svg d'un répertoire donné en fichiers ico:
Explication:
mogrify
: Commeconvert
, mais vous permet de traiter plusieurs fichiers par lots.-format ico
: Notre format de fichier cible. Crée des.ico
fichiers au lieu d'écraser le fichier d'origine (comme le ferait mogrify par défaut).-density 1200
: Étant donné que nous ne pouvons pas spécifier une taille de pixel cible à laquelle ImageMagick devrait pixelliser le SVG (il pixelliserait d'abord avec une densité par défaut puis à l'échelle), nous pixellisons le SVG avec une résolution incroyablement élevée (1200 dpi), pour garantir que l'image sera réduite à 256x256 au lieu d' échelle .-background transparent
: L'arrière-plan sera rendu transparent.-trim
: Supprimer la bordure existante autour de l'image.-resize 256x256
: Redimensionnez l'image en vous assurant que le côté le plus long a 256 pixels, tout en conservant le rapport hauteur / largeur.-gravity center -extent 256x256
: Agrandissez le canevas, en vous assurant que le côté court dispose également de 256 pixels. L'image existante est alignée au centre. Ceci est nécessaire car nous avons besoin d'une image carrée comme base pour un fichier ICO.-define icon:auto-resize
: Incluez non seulement l'image 256x256 mais aussi toutes les résolutions recommandées à l'échelle réduite (par exemple 32x32) dans le fichier ICO.la source
La plupart des réponses données ici ignorent la partie à la taille souhaitée de la question. Je n'ai pas pu obtenir de résultats satisfaisants en utilisant
convert
"mise à l'échelle" d'un SVG.inkscape
fait un meilleur travail et préserve également la transparence de l'arrière-plan.Selon votre cas d'utilisation, utilisez l'une des options suivantes:
inscape in.svg -d 300 -e out.png
inscape in.svg -w 800 -e output.png
inscape in.svg -h 600 -e output.png
Notez que la spécification de la largeur et de la hauteur ne préserve pas le rapport / largeur.
Pour convertir plusieurs fichiers à la fois, ajustez les éléments suivants à votre cas d'utilisation (dans
bash
ou compatible):la source