基于PIL和矢量的图形

2024-04-25 07:43:53 发布

您现在位置:Python中文网/ 问答频道 /正文

当我试图用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上。

我上传了两张图片:EPSSVG


Tags: inpysvgtestimagepillibpackages
3条回答

从今天起,也就是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曲面可以显示、保存到文件等)

相关问题 更多 >