You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows下Python调用CairoSVG转换SVG至PNG时本地路径报错求助

解决CairoSVG在Windows下转换本地SVG到PNG的URLError问题

嘿,我刚踩过一模一样的坑!你遇到的urllib.error.URLError: <urlopen error unknown url type: c>报错,根源完全和你推测的一致——CairoSVG的url参数是专门用来处理网络URL或者标准的file协议路径的,直接喂Windows本地的C:\开头路径,它会把C当成一种未知的URL协议,自然就懵了。

给你几个亲测有效的解决方案,选哪个都行:

  • 方案1:把本地路径转换成file协议URL
    Windows路径要改成file:///开头的格式,注意把反斜杠换成正斜杠,还要加三个斜杠:

    cairosvg.svg2png(url=r'file:///C:/images/image.svg', write_to=r'C:\images\image.png')
    
  • 方案2:使用file_obj参数直接读取本地文件
    跳过URL解析这一步,直接打开SVG文件对象传给CairoSVG:

    with open(r'C:\images\image.svg', 'rb') as svg_file:
        cairosvg.svg2png(file_obj=svg_file, write_to=r'C:\images\image.png')
    
  • 方案3:读取文件字节内容用bytestring参数
    如果需要更灵活的处理,也可以先把SVG内容读成字节串再传入:

    with open(r'C:\images\image.svg', 'rb') as svg_file:
        svg_content = svg_file.read()
    cairosvg.svg2png(bytestring=svg_content, write_to=r'C:\images\image.png')
    

简单说就是别让CairoSVG把你的本地路径当成网络URL来解析,换个参数或者转成它能识别的file协议格式就搞定啦!

内容的提问来源于stack exchange,提问作者Laurengineer

火山引擎 最新活动