当我试图用PIL打开EPS或SVG图像时遇到了几个问题。
期初每股收益
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
打开SVG也以IOError: cannot identify image file
结尾。
问题是我的应用程序必须同时支持这两种格式。转换为其他格式是没有选择的。我在Windows 7,Python 2.7.2和PIL 1.1.7上。
从今天起,也就是2017年7月,通过导入提供svg2png功能的cairosvg,可以轻松地读取和转换SVG文件。
此外,svglib开发再次启动,因此通过导入svglib和reportlab,svg到png的转换也应该很容易。两个电话的问题。
然而,枕头支持电动势仍然是矢量图形。我无意中发现了这个线程,因为我正在寻找方便的方法来将SVG转换为EMF。 您最好使用Inkscape从SVG创建EMF:
inkscape --file image.svg --export-emf image.emf
有替代品,但替代品不是你想要的-没有 据我所知,这个库可以透明地打开一个基于矢量的图形,并将其视为任何其他图像,而不必打开web浏览器并获取其渲染。
对于SVG的处理,有一个使用Cairo的方法——Cairo也可以处理很多其他格式,如果比PILAPI更难处理的话——我认为Cairo也可以处理EPS——所以,在最坏的情况下,您可以使用pycairo或者pycairo+PIL开发应用程序。
呈现SVG的方法是:Convert SVG to PNG in Python
(注意,您不必“将文件转换为PNG”-recibe显示如何渲染到cairo曲面,cairo曲面可以显示、保存到文件等)
相关问题 更多 >
编程相关推荐