首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将SVG转换为PNG python

将SVG转换为PNG python
EN

Stack Overflow用户
提问于 2022-07-31 06:48:25
回答 2查看 170关注 0票数 0

在python中,将SVG转换为PNG有问题。我使用的是Cairosvg,这就是我的代码。

代码语言:javascript
运行
复制
from cairosvg import svg2png

f = open(f"{filename}.svg")
svg2png(bytestring=f.read().encode("utf-8"),write_to=f"{filename}.png")
f.close()

然而,它总是会产生这个错误。

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "d:\PycharmProjects\QR Code Scanner\main.py", line 1, in <module>
    import QrUtil
  File "d:\PycharmProjects\QR Code Scanner\QrUtil.py", line 11, in <module>
    from cairosvg import svg2png
  File "D:\PycharmProjects\QR Code Scanner\venv\lib\site-packages\cairosvg\__init__.py", line 26, in <module>
    from . import surface  # noqa isort:skip
  File "D:\PycharmProjects\QR Code Scanner\venv\lib\site-packages\cairosvg\surface.py", line 9, in <module>
    import cairocffi as cairo
  File "D:\PycharmProjects\QR Code Scanner\venv\lib\site-packages\cairocffi\__init__.py", line 48, in <module>
    cairo = dlopen(
  File "D:\PycharmProjects\QR Code Scanner\venv\lib\site-packages\cairocffi\__init__.py", line 45, in dlopen
    raise OSError(error_message)  # pragma: no cover
OSError: no library called "cairo-2" was found
no library called "cairo" was found
no library called "libcairo-2" was found
cannot load library 'libcairo.so.2': error 0x7e
cannot load library 'libcairo.2.dylib': error 0x7e
cannot load library 'libcairo-2.dll': error 0x7e

有人能帮忙吗,即使你能提出一个更好的方法?

EN

回答 2

Stack Overflow用户

发布于 2022-07-31 06:55:23

你试过使用pyvips吗?

代码语言:javascript
运行
复制
import pyvips

image = pyvips.Image.new_from_file("something.svg", dpi=300)
image.write_to_file("x.png")

如果您想了解更多信息,请查看这里的答案

票数 0
EN

Stack Overflow用户

发布于 2022-07-31 07:11:50

我猜您可能没有安装GTK。根据GitHub上类似的bug报告的说法,开罗依赖于GTK。一旦我使用已安装GTK,我就可以使用Cairo使用您的代码将SVG转换为PNG。

或者,您也可以尝试SVGLib

代码语言:javascript
运行
复制
from svglib.svglib import svg2rlg
from reportlab.graphics import renderPM

drawing = svg2rlg("file.svg")
renderPM.drawToFile(drawing, "file.png", fmt="PNG")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73181213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档