Conversion svg -> png en php ?

Le
Antoine
Bonsoir,

je recherche une solution pour convertir en php des images svg en images png avec les
contraintes suivantes :

- le serveur n'a pas et ne peut pas avoir imagemagick d'installé
- idéalement, la conversion devrait être capable de préserver l'anticrénelage des svg

Merci d'avance,
Antoine
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Aurelien Lebrun
Le #16734851
"Antoine" news:
Bonsoir,

je recherche une solution pour convertir en php des images svg en images
png avec les
contraintes suivantes :

- le serveur n'a pas et ne peut pas avoir imagemagick d'installé
- idéalement, la conversion devrait être capable de préserver
l'anticrénelage des svg

Merci d'avance,
Antoine




Un solution simple si tu as les packages python installés sur ton serveur
est d'executer via php ce script assez sympatique fait par un français:

#!/usr/bin/python

'''svgtopng - SVG to PNG converter
Copyright (c) 2007 Guillaume Seguin Licensed under GNU GPLv2'''

import cairo
import rsvg
from sys import argv
from os.path import exists
import getopt

def usage ():
print "Usage : %s [--width WIDTH] [--height HEIGHT] [-o OUTPUTFILE]
FILE" % argv[0]
raise SystemExit

if __name__ == "__main__":
try:
opts, args = getopt.getopt (argv[1:], 'o:h',
['width=', 'height=', 'output=',
'help'])
except getopt.GetoptError:
usage ()
output = None
width = None
height = None
for o, a in opts:
if o in ('-o', '--output'):
output = str (a)
elif o == '--width':
width = int (a)
elif o == '--height':
height = int (a)
elif o in ('-h', '--help'):
usage ()
if len (args) == 0:
usage ()
file = args[0]

if not exists (file):
usage ()

svg = rsvg.Handle (file = file)

if not output:
if file[-4:] == ".svg":
file = file[:-4]
output = "%s.png" % file
base = "%s%d.png"
i = 1
while exists (output):
output = base % (file, i)
i += 1

if width == 0 and height == 0:
width = svg.props.width
height = svg.props.width
elif width != 0:
ratio = float (width) / svg.props.width
height = int (ratio * svg.props.height)
elif height != 0:
ratio = float (height) / svg.props.height
width = int (ratio * svg.props.width)

surface = cairo.ImageSurface (cairo.FORMAT_ARGB32, width, height)
cr = cairo.Context (surface)

wscale = float (width) / svg.props.width
hscale = float (height) / svg.props.height

cr.scale (wscale, hscale)

svg.render_cairo (cr)

surface.write_to_png (output)
#

Pas besoin d'explications, l'usage étant assez simple:
svntopng [--width largeurenpx] [--height hauteurenpx] [-o nomfichiersortie]
nomfichierentree

Sinon sans utiliser imagemagick, il ne te reste plus qu'a lire de la doc
(plein ^^) et parcourir le svg via pour en dessiner un png, mais la je ne
saurai pas t'aider plus :(
Tu peux partir d'ici : http://www.libpng.org/pub/png/pngdocs.html

a+
Antoine
Le #16746611
Aurelien Lebrun
"Antoine" news:
Bonsoir,

je recherche une solution pour convertir en php des images svg en
images png avec les
contraintes suivantes :

- le serveur n'a pas et ne peut pas avoir imagemagick d'installé
- idéalement, la conversion devrait être capable de préserver
l'anticrénelage des svg

Merci d'avance,
Antoine




Un solution simple si tu as les packages python installés sur ton
serveur est d'executer via php ce script assez sympatique fait par
un français:



J'ai !

<snip>

Pas besoin d'explications, l'usage étant assez simple:
svntopng [--width largeurenpx] [--height hauteurenpx] [-o
nomfichiersortie] nomfichierentree



J'ai pris bonne note de tout ça.

Sinon sans utiliser imagemagick, il ne te reste plus qu'a lire de
la doc (plein ^^)



Oui, plein plein.

et parcourir le svg via pour en dessiner un png,
mais la je ne saurai pas t'aider plus :(
Tu peux partir d'ici : http://www.libpng.org/pub/png/pngdocs.html



Un grand merci, Aurélien, pour cette piste que je vais tester dès demain.

Bonne fin de week-end à tous,
Antoine
Publicité
Poster une réponse
Anonyme