2010-06-25 12 views
2

Il est nécessaire de transformer les fichiers .svg et les enregistrer au format .svg ou jpeg. Le problème avec ImageMagick est qu'il enregistre les fichiers transformés sur fond blanc et j'en ai terriblement besoin sur transparent.transformer des images .SVG à l'aide de PHP - Image Magick similaire

Des suggestions avec d'autres outils ou effacer php? J'apprécierais vraiment ça.

+3

Le format JPEG ne prend pas en charge la transparence. – Artefacto

+0

Quelle transformation avez-vous réellement besoin de faire aux fichiers SVG? –

Répondre

4

La bonne commande ImageMagick doit être:

convert -background none somefile.svg somefile.png 

Vous devez utiliser le format de fichier PNG ou GIF, JPEG car ne supporte pas la transparence.

Pour l'utiliser en PHP:

<?php 
$svg_file_name = "somefile.svg"; 
$png_file_name = "somefile.png; 
system("convert -background none $svg_file_name $png_file_name"); 
?> 
+0

j'ai besoin de certains outils php de imagemagick - pas de commande externe – Monky

+2

vous avez dit "Toutes les suggestions avec d'autres outils ou effacer php", donc c'était avec un autre outil! Mais vous pouvez l'appeler depuis PHP, voir ma mise à jour. – jigfox

0

Je doute que vous pouvez transformer facilement des fichiers SVG à partir de php. Les fichiers SVG sont essentiellement des fichiers XML, et la norme est publique, donc tout le monde peut faire un convertisseur ...

Je choisirais l'outil externe, c'est plus simple et plus rapide que le traitement depuis un langage scripté, et beaucoup plus sûr lorsque l'auteur du script doesnt savent réellement comment trouver la ligne de commande passe pour une application, et que les fichiers JPEG ne prend pas en charge la transparence :)

aller convert -background none somefile.svg somefile.png comme Jens a dit ...

0

Vous ne pouvez pas faire de la transparence avec JPEG, mais voici comment enregistrer un SVG en tant que PNG avec un arrière-plan transparent ...

$image = new Imagick(); 
$image->setBackgroundColor(new ImagickPixel('transparent')); 
$image->readImage('somefile.svg'); 

// ... do any image manipulation you need to here ... 

$image->setImageFormat('png32'); 
$image->writeImage('somefile.png');