#1 Le 30/09/2014, à 07:24
- mainmich
"convert" un svg en png en augmentant la taille/résolution sans perte.
Bonjour,
J'ai un outil qui me génère des images svg que je souhaiterai agrandir et convertir en png.
Je cherche depuis un moment mais malgré tout les forums et stackoverflow je n'arrive pas à trouver une commande qui me permette de faire ça sans perte de qualité.
voila ce que j'ai pour le moment :
convert +antialias -density 144 -resize 500% img.svg img.png
Ce code me donne bien une image png 5 fois plus grande que mon svg initial mais pixelisé au possible. J'ai essayé avec plusieurs valeur à density mais rien y fait.
Avez vous une idée/solution?
Romain.
Hors ligne
#2 Le 30/09/2014, à 08:15
- tiramiseb
Re : "convert" un svg en png en augmentant la taille/résolution sans perte.
Salut,
L'ordre des paramètres est important pour convert.
À tout hasard, as-tu essayé de mettre le nom du fichier svg en tout premier ?
=>
convert img.svg +antialias -density 144 -resize 500% img.png
Et éventuellement "density" après "resize" ?
=>
convert img.svg +antialias -resize 500% -density 144 img.png
Et éventuellement sans "antialias" ?
=>
convert img.svg -resize 500% -density 144 img.png
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#3 Le 30/09/2014, à 08:18
- tiramiseb
Re : "convert" un svg en png en augmentant la taille/résolution sans perte.
Et as-tu essayé "density" sans "resize" ?
=>
convert img.svg -density 500 img.png
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#4 Le 30/09/2014, à 08:49
- mainmich
Re : "convert" un svg en png en augmentant la taille/résolution sans perte.
Je viens d'essayer chacune de tes propositions mais le résultats est le même (sauf sans le resize bien-sur).
L'image est toujours aussi pixelisée, alors que si je zoom sur le svg, elle reste parfaite.
Hors ligne
#5 Le 30/09/2014, à 08:55
- tiramiseb
Re : "convert" un svg en png en augmentant la taille/résolution sans perte.
Ok, j'ai testé de mon côté. La commande suivante fonctionne :
convert -density 500 img.svg img.png
Comme je l'avais dit, l'ordre a de l'importance, et là je t'avais donné le mauvais ordre : il faut lui dire « la prochaine image aura une densité de 500 » PUIS donner le nom de l'image svg et non le contraire
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#6 Le 30/09/2014, à 09:03
- tiramiseb
Re : "convert" un svg en png en augmentant la taille/résolution sans perte.
Avec ta toute première commande :
convert +antialias -density X -resize Y img.svg img.png
ça résulte en :
1/ augmenter la densité à X
2/ redimensionner l'image résultante de "1" à 500%
Donc ça fait un double redimensionnement, un avec la densité puis l'autre avec le pourcentage.
Dernière modification par tiramiseb (Le 30/09/2014, à 09:03)
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#7 Le 30/09/2014, à 09:24
- mainmich
Re : "convert" un svg en png en augmentant la taille/résolution sans perte.
Le souci c'est que avec
convert -density 500 img.svg img.png
Mon png fait la même taille que on svg, alors que je veux l'agrandir.
Un -resizer entre svg et png me donne une image toujours pixelisée.
Hors ligne
#8 Le 30/09/2014, à 09:30
- tiramiseb
Re : "convert" un svg en png en augmentant la taille/résolution sans perte.
avec
convert -density 500 img.svg img.png
Mon png fait la même taille que on svg
Et avec une autre valeur, le fichier png fait toujours la même taille !?
convert -density 200 img.svg img.png
-----
Chez moi ça donne bien deux tailles différentes :
$ convert -density 500 img.svg img500.png
$ convert -density 200 img.svg img200.png
$ file img200.png img500.png
img200.png: PNG image data, 983 x 983, 8-bit grayscale, non-interlaced
img500.png: PNG image data, 2458 x 2458, 8-bit grayscale, non-interlaced
Que donnent les mêmes manips chez toi ?
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#9 Le 30/09/2014, à 09:37
- mainmich
Re : "convert" un svg en png en augmentant la taille/résolution sans perte.
Je n'ai pas de changement de taille :
root [] > convert -density 1000 9.svg 5-500.png
root [] > file 5-500.png
5-500.png: PNG image data, 350 x 496, 16-bit/color RGBA, non-interlaced
root [] > convert -density 200 9.svg 5-200.png
root [] > file 5-200.png
5-200.png: PNG image data, 350 x 496, 16-bit/color RGBA, non-interlaced
Hors ligne
#10 Le 30/09/2014, à 09:43
- tiramiseb
Re : "convert" un svg en png en augmentant la taille/résolution sans perte.
C'est étonnant. Je vois une possibilité : que l'information de densité ne soit pas incluse dans ton fichier 9.svg, du coup il ne sait pas comment redimensionner vu qu'il ne sait pas de quelle densité partir.
Pour vérifier ça, que donne la commande suivante ?
identify -verbose 9.svg | grep Resolution
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#11 Le 30/09/2014, à 09:49
- mainmich
Re : "convert" un svg en png en augmentant la taille/résolution sans perte.
J'ai rien.
Et j'ai testé avec un svg téléchargé sur wikipédia pour voir si ça venait de mon outil php mais pareil, rien.
C'est la première fois que je touche au svg comme ça, je pensai pas en c#### autant!
Comment je peux donc ajouter cet info de résolution à mon svg?
Hors ligne
#12 Le 30/09/2014, à 09:51
- mainmich
Re : "convert" un svg en png en augmentant la taille/résolution sans perte.
Autant pour moi, avec le R majuscule ça marche mieux, j'ai donc 72*72.
Hors ligne
#13 Le 30/09/2014, à 09:57
- tiramiseb
Re : "convert" un svg en png en augmentant la taille/résolution sans perte.
J'ai rien.
Ok, donc c'est bien ça le problème.
Autant pour moi, avec le R majuscule ça marche mieux, j'ai donc 72*72.
Ah ben non, ce n'est pas ça le problème, tu as donc bien une résolution.
Hum heureusement qu'on donne des commandes précises hein...
Du coup je ne comprends pas trop pourquoi il fait ça chez toi...
Et j'ai testé avec un svg téléchargé sur wikipédia pour voir si ça venait de mon outil php mais pareil, rien.
php ? On ne parle pas de php jusqu'ici, on parle d'une commande en ligne de commande.
Ne commençons pas à compliquer, d'abord trouvons une solution en ligne de commande.
Le fichier en question n'a peut-être pas non plus cette information.
Comment je peux donc ajouter cet info de résolution à mon svg?
Il y a plus simple, dans ce cas : changer directement les informations de taille en pixels du SVG.
Vérifions d'abord si c'est bien comme je le pense...
Que donnent les commandes suivantes ?
identify 9.svg
grep width= 9.svg
grep height= 9.svg
---
Ensuite, tu parles de PHP : c'est pour traiter des images qui proviennent toujours du même machin (fichier stocké ? générateur ? autre ?) ? Ou alors c'est genre un convertisseur auquel on pourra donner différents SVG venant de n'importe où ?
Dans le premier cas, tu peux te dire que tous les SVG seront formés de la même manière et garder une méthode simple. Dans le second cas, il faut traiter plein de cas pour être sûr que ça fonctionne bien : c'est beaucoup plus complexe.
Dernière modification par tiramiseb (Le 30/09/2014, à 09:58)
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#14 Le 30/09/2014, à 09:59
- mainmich
Re : "convert" un svg en png en augmentant la taille/résolution sans perte.
J'ai répondu avant ton message, j'avais mis en minuscule, j'ai donc bien 72*72 avec mes svg.
Hors ligne
#15 Le 30/09/2014, à 10:05
- tiramiseb
Re : "convert" un svg en png en augmentant la taille/résolution sans perte.
J'ai modifié mon message entre-temps. Il contient des demandes (commandes à exécuter et questions), tu peux y répondre.
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#16 Le 30/09/2014, à 10:35
- mainmich
Re : "convert" un svg en png en augmentant la taille/résolution sans perte.
On a trouvé une piste avec un collègue, il s'agit de la version de imagemagick, étant sur squeeze je suis limité à la 6.6.0.4 et mon collègue sur wheezy n'a pas de problème de redimensionnement en 6.8 je crois.
Hors ligne
#17 Le 30/09/2014, à 10:42
- tiramiseb
Re : "convert" un svg en png en augmentant la taille/résolution sans perte.
Ah oui, en effet, tu n'avais pas précisé ton système d'exploitation. Je suis bêtement parti sur l'idée que tu étais sur une Ubuntu récente.
C'est fort probablement la source du problème.
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne