I run into several problems when I try to open EPS- or SVG-Images with PIL.
from PIL import Image test = Image.open('test.eps')
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
Also opening SVG ends in
IOError: cannot identify image file.
The problem is I have to support both formats in my application. Converting to other formats is no alternative. I'm on Windows 7, Python 2.7.2 and PIL 1.1.7.
There are alternatives to PIL, but alternatives to PIL are not what you want - There is no library I know of that would transparently open a vector based drawing and treat it just as any other image, short of opening a web browser and grabbing its render.
For dealing with SVG, there is a recipe using Cairo - which also can handle a lot of other formats, if a bit more difficult to deal with than the PIL API - I think Cairo can also handle EPS - so, you can probably develop your app with pycairo - or pycairo + PIL in the worst case.
The recipe for rendering SVG's is in the answer to: Convert SVG to PNG in Python
(note that you don't have to "convert the file to PNG" - the recibe shows how you render to a cairo surface, which can be displayed, saved to a file, and so on)