PIL et vectorbased graphiques
Je rencontre plusieurs problèmes lorsque j'essaie d'ouvrir EPS ou SVG Images avec PIL.
Ouverture EPS
from PIL import Image
test = Image.open('test.eps')
se termine par:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\Lib\site-packages\PIL\Image.py", line 1965, in open
return factory(fp, filename)
File "C:\Python27\Lib\site-packages\PIL\ImageFile.py", line 91, in __init__
self._open()
File "C:\Python27\Lib\site-packages\PIL\EpsImagePlugin.py", line 206, in _open
raise IOError, "bad EPS header"
IOError: bad EPS header
Également l'ouverture SVG se termine dans IOError: cannot identify image file
.
Le problème est que j'ai à soutenir les deux formats dans mon application. La conversion vers d'autres formats est pas d'alternative. Je suis sur Windows 7, Python 2.7.2 et PIL 1.1.7.
J'ai téléchargé les deux images: EPS et SVG.
PIL ne supporte pas le format SVG. Le format EPS est pas entièrement pris en charge. Voir pythonware.com/library/pil/handbook/index.htm.
Alors, est-il une alternative à la LIP en python monde?
Alors, est-il une alternative à la LIP en python monde?
OriginalL'auteur floqqi | 2013-02-28
Vous devez vous connecter pour publier un commentaire.
Il existe des alternatives à la LIP, mais des alternatives à la LIP ne sont pas ce que vous voulez, Il n'y a pas de
bibliothèque je sais de manière transparente ouvrir un vecteur de base de dessin et de le traiter comme n'importe quelle autre image, bref de l'ouverture d'un navigateur web et en saisissant son rendu.
Pour traiter avec SVG, il y a une recette à l'aide du Caire, qui s'est également capable de gérer un tas d'autres formats, même si un peu plus difficile à traiter que les PIL à l'API, je pense que le Caire pouvez également gérer EPS - oui, vous pouvez probablement développer votre application avec pycairo - ou pycairo + PIL dans le pire des cas.
La recette pour le rendu SVG est dans la réponse à: Convertir SVG en PNG en Python
(notez que vous n'avez pas à "convertir le fichier PNG" la recibe montre comment vous rendre à un caire surface, qui peuvent être affichées, enregistrées dans un fichier, et ainsi de suite)
OriginalL'auteur jsbueno
À compter d'aujourd'hui, c'est en juillet 2017, la lecture et la conversion de fichiers SVG peut être facilement accompli par l'importation de cairosvg qui fournit la svg2png fonction.
En outre, le svglib le développement de nouveau, ainsi, par l'importation de svglib et reportlab, la conversion de svg en png devrait être facile. une question de 2 appels.
OriginalL'auteur Alberto Vassena
PIL
ne prend pas en chargesvg
, mais vous pouvez essayer desvglib
qui,unheureusement, n'semblent être en cours de développement:OriginalL'auteur askewchan
Encore, Oreiller soutient EMF qui est encore de graphiques vectoriels. Je suis tombé sur ce fil que j'ai été vous cherchez un moyen pour convertir SVG à des champs électromagnétiques de toute façon.
Votre meilleur pari est d'utiliser Inkscape pour créer la force électromotrice de SVG:
inkscape --file image.svg --export-emf image.emf
OriginalL'auteur Guibod