当前位置: 首页 > 面试题库 >

在Python中将SVG转换为PNG

轩辕弘雅
2023-03-14
问题内容

如何转换的svgpng,在Python?我将储存svg在的实例中StringIO。我应该使用pyCairo库吗?如何编写该代码?


问题答案:

答案是“ pyrsvg
-一个Python绑定的librsvg。

有一个提供它的Ubuntu python-rsvg软件包。在Google上搜索它的名字很糟糕,因为它的源代码似乎包含在“ gnome-python-desktop” Gnome项目GIT存储库中。

我制作了一个极简的“ hello world”,可将SVG渲染到开罗表面并将其写入磁盘:

import cairo
import rsvg

img = cairo.ImageSurface(cairo.FORMAT_ARGB32, 640,480)

ctx = cairo.Context(img)

## handle = rsvg.Handle(<svg filename>)
# or, for in memory SVG data:
handle= rsvg.Handle(None, str(<svg data>))

handle.render_cairo(ctx)

img.write_to_png("svg.png")

更新 :从2014年开始,Fedora Linux发行版所需的软件包是:gnome-python2-rsvg。上面的摘录清单仍按原样工作。



 类似资料:
  • 问题内容: 如何以编程方式将SVG文件转换为PDF?(在生成PDF之前,我需要在某些方面进行更改,因此仅使用工具进行预转换就不够了。) 理想情况下,使用Java但Perl或PHP也可以。 显然,我基本上是在考虑使用Java的Apache FOP和Batik。但是,无论我搜索多长时间,都无法找到有关该操作方法的简单介绍。诸如SVGConverter之类的内容具有“为能够转换部分或全部GraphicC

  • 问题内容: 我有一个从代码生成的点文件,想要在输出中呈现它。为此,我在网上看到命令是这样的 但是我的问题是我想在我的python程序中使用此内置函数。 我该怎么办? 我看着pydot,但似乎找不到答案。 问题答案: pydot无论如何都需要安装GraphViz二进制文件,因此,如果您已经生成了点文件,则不妨直接自己直接调用点。例如:

  • 问题内容: 我是使用subprocess.Popen()从进程的输出中获得的: 对我来说,它似乎不是有效的json。我已经使用和,但是没有运气。有人可以在正确的方向帮助我吗?提前致谢。 问题答案: 确实,导出ECMA脚本而不是JSON的旧版本。根据此debian错误报告,升级1.4.8应该会给您适当的JSON。另请参阅项目CHANGELOG: 现在,通过正确引用xport的键,xport的JSON

  • 问题内容: 我在SO上看到许多问题,询问将XML转换为JSON的方法,但我对采用其他方法感兴趣。是否有用于将JSON转换为XML的python库? 编辑: 什么都没有马上回来,所以我继续写了一个脚本来解决这个问题。 Python已经允许您将JSON转换为本地dict(使用或在版本2.6以下的中,),因此我编写了一个库,可将本地dict 转换为XML字符串。 https://github.com/q

  • 问题内容: 我需要传递一个可以使用转换的对象。查询如下所示: 为了传递可以转换为json的HttpResponse对象,我从这里需要做什么? 问题答案: 好吧,如果您只是这样做: 你会得到一个数组数组… 另一种方法是使用: 这将为您提供一个带有索引的json对象… 如果那不是您想要的,那么您需要指定结果的显示方式…

  • 问题内容: 如何将int(秒数)转换为mm:ss或hh:mm:ss格式? 我需要使用Python代码(如果可能,请在Django模板中)执行此操作。 问题答案: 我不敢相信众多答案中的任何一个都可以提供我认为的“一种明显的方法”(而且我什至都不是荷兰人!秒(特别是86399秒): 由于time过滤器支持时髦的时间格式语法(我相信是从PHP启发而来的),并且还需要datetime模块和时区实现(例如

  • 我需要将ndjson对象转换为python中的json,我看到pypi中有一个库。org,但我不能使用它,它是ndjson 0.3.1 进入json 有什么帮助吗?谢谢你们

  • 问题内容: 我有以下Python pandas数据框: 我想要: 我看过pivot(),pivot_table(),Transpose和unstack(),它们似乎都没有给我。熊猫新手,所以所有帮助表示赞赏。 问题答案: 您需要通过转置: 如果需要重命名列,则有点复杂: 另一个更快的解决方案是使用: 时间 :