使用CairoSVG从svg转换的png中的不透明度错误

2024-10-04 09:20:52 发布

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

我们使用CairoSVG(http://cairosvg.org/)将svg字符串数据转换为png并将png返回到浏览器。svg字符串直接来自FusionCharts图表的getSVGString()方法。在

如果我在本地将这个字符串保存为svg文件,并在Illustrator或浏览器中打开它,它看起来很好。以下是svg数据:http://pastebin.com/GG0vqWF4

图像应该是这样的:http://pbrd.co/1nE9y11

但是在返回到浏览器的png中,所有的圆圈都是空的:http://pbrd.co/1nE9IFL

下面是执行转换的Python代码:

import cherrypy
import cairocffi as cairo
import cairosvg
...

class SaveImagePage(LoggedInPage):
    @cherrypy.expose
    def index(self, svgString, **params):
        png = cairosvg.svg2png(svgString)

        cherrypy.response.headers['content-type'] = 'image/png'
        cherrypy.response.headers['content-disposition'] = \
            'attachment; filename="BrandIndex Chart.png"'

        return png

有什么想法吗?我对svg格式不太熟悉,Cairo也没有抛出任何错误;不确定这里可能出了什么问题。在


Tags: 数据字符串svgimporthttppngresponse浏览器
1条回答
网友
1楼 · 发布于 2024-10-04 09:20:52

凯洛桑的问题似乎是这样的。在

就您所面临的具体问题而言,早期版本的FusionCharts(<;3.4)在生成的SVG字符串中的%,:字符中有一个问题。FusionCharts的最新版本纠正了这个问题,生成的SVG在Inkscape、Batik库中导出时没有问题。在

我已经用Inkscape和Cairo替换了SVG字符串中有问题的%,:符号。在Inkscape上,导出的图像是正确的,而问题仍然存在于Cairo中。在

如果您愿意使用其他导出库,请使用Inkscape。但是FusionCharts也有自己的导出功能,如果您希望在浏览器上下载导出的png,那么使用FusionCharts导出功能就可以了。

相关问题 更多 >