Page 1 sur 1

Convertir SVG vers PNG

Posté : 17 juil. 2022, 18:39
par benws2305
Bonjour,
Je souhaite convertir une image SVG généré par un script => https://meteo-gournaysuraronde.fr/Vigil ... lance2.svg en fichier png.
Le seul soucis c'est que j'essaye différentes méthodes de conversion et le png obtenu ne possède que la carte et les pictogrammes sont complètement anarchiques =>https://meteo-gournaysuraronde.fr/Vigil ... lance2.png

$usmap = 'carte_vigilance2.svg';
$im = new Imagick();
$svg = file_get_contents($usmap);

$im->setBackgroundColor(new ImagickPixel('transparent')); //Fond transparent

$im->readImageBlob($svg);

/*png settings*/
$im->setImageFormat("png24");
//$im->resizeImage(720, 445, imagick::FILTER_LANCZOS, 1);  /*Optional, if you need to resize*/

/*jpeg*/
$im->setImageFormat("jpeg");
// $im->adaptiveResizeImage(720, 445); /*Optional, if you need to resize*/

$im->writeImage('carte_vigilance2.png');/*(or .jpg)*/
$im->clear();
$im->destroy();

Je m'aperçois cependant que lorsque je mets l'URL de l'image svg sur le forum les pictogrammes n'apparaissent pas, alors que si on y accède directement sur le serveur via le premier lien, oui ! Peut être est-ce lié ? => Image

Re: Convertir SVG vers PNG

Posté : 18 juil. 2022, 10:00
par @rthur
Je ne suis pas un expert en SVG mais je pense que tu as un problème avec ton image d'origine, c'est probablement la raison des bugs de conversion que tu rencontres.
En ouvrant ton image SVG dans le logiciel Inkscape on voit une sorte de trainée des thermomètres vers le bas.
Et en utilisant les solutions de conversion SVG>PNG qu'on trouve en ligne aucune ne réussit à convertir correctement ton image, donc je pense que le problème est à la source.

Re: Convertir SVG vers PNG

Posté : 18 juil. 2022, 10:05
par @rthur
Le validateur du W3C donne pas mal de pistes à corriger (400 erreurs mais pas d'inquiétude, c'est souvent les mêmes qui se répètent) :
https://validator.w3.org/check?uri=http ... ne&group=0

Re: Convertir SVG vers PNG

Posté : 19 juil. 2022, 10:23
par benws2305
Bonjour,
Merci pour ta réponse, j'ai corrigé l'ensemble des problèmes du validateur (d'ailleurs merci cela me sera utile pour d'autres projets !) et j'ai aussi mis les icônes en png plutôt que svg et tout de suite j'ai le rendu que je souhaitais : https://meteo-gournaysuraronde.fr/Vigil ... lance2.png


EDIT : c'est bon tous les icônes sont bien apparus. Par contre le script prend énormément de temps et en tâche cron cela plante, peut être existe-t-il un autre moyen de conversion plus optimisé.

EDIT 2 : Bon en fait en lancant le script plusieurs fois le résultat est aléatoire, des fois il va durer longtemps (20 secondes environ) et la carte sera générée totalement, ou alors il dure 2 secondes, la carte est entière mais il manque les 3/4 des pictos voir tous ...
Même en isolant le script à part de celui générant le SVG ce qui montre que lui est désormais ok (d'ailleurs cette fois les sites convertissent bien, quelques essais et à chaque fois j'avais bien les pictos).

Re: Convertir SVG vers PNG

Posté : 19 juil. 2022, 12:34
par Dsynx
perso je suis pas pour donné se genre de travail à php je pense que le mieux c'est de faire tafer l'explorateur web donc de passé par du javascript
https://www.delftstack.com/howto/javasc ... avascript/