python cairosvg 库专题博客,10分钟掌握 cairosvg

Posted 梦想橡皮擦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python cairosvg 库专题博客,10分钟掌握 cairosvg相关的知识,希望对你有一定的参考价值。

cairosvg 库用于将 SVG 图像转换为其他图片格式。它使用 Cairo 库来绘制 SVG 图像,并支持将 SVG 图像转换为 PNG、PDF、PS、SVG 和 GIF 格式。

python cairosvg

Python cairosvg 上手案例

由于该库是图片转格式的第三方库,所以我们可以直接进行上手学习,提前准备一张 svg 图片。
如果没有,可以查看《Python 生成 svg 图片,一篇博客带你掌握 Python 与 svg 之间的操作》 进行生成。

import cairosvg

cairosvg.svg2png(url='random_numbers.svg', write_to='random_numbers.png')

可以看到该库直接使用 svg2png 即可将图片进行转换。

cairosvg 直接将 svg 图像转换为二进制数据

在实战项目中,很多时候我们需要将动态生成的 svg 图片直接以 png 格式进行输出,这时就用到了下述代码。

import cairosvg

with open('random_numbers.svg', 'rb') as f:
    svg_data = f.read()

png_data = cairosvg.svg2png(bytestring=svg_data)

with open('ca.png', 'wb') as f:
    f.write(png_data)

生成的图片相较于矢量 svg 来说,会有轻微失真。

cairosvg 库函数清单

  • svg2png(url=None, bytestring=None, write_to=None, dpi=96, parent_width=None, parent_height=None, scale=None, **kwargs):将 SVG 图像转换为 PNG 格式。
  • svg2pdf(url=None, bytestring=None, write_to=None, dpi=96, parent_width=None, parent_height=None, scale=None, **kwargs):将 SVG 图像转换为 PDF 格式。
  • svg2ps(url=None, bytestring=None, write_to=None, dpi=96, parent_width=None, parent_height=None, scale=None, **kwargs):将 SVG 图像转换为 PS 格式。
  • svg2svg(url=None, bytestring=None, write_to=None, dpi=96, parent_width=None, parent_height=None, scale=None, **kwargs):将 SVG 图像转换为 SVG 格式。
  • svg2gif(url=None, bytestring=None, write_to=None, dpi=96, parent_width=None, parent_height=None, scale=None, **kwargs):将 SVG 图像转换为 GIF 格式。

可以看到仅函数名称不同,参数一致。

其中要求 urlbytestring 两个参数至少需要提供一个,write_to 参数用于指定输出文件的路径。

除此之外,cairosvg 库还有一些其他函数用于控制输出图像的样式和效果。

  • dpi: 用于设置图像的 DPI,默认为 96;
  • parent_width, parent_height : 用于设置输出图像的宽和高;
  • scale: 用于设置图像的缩放比例;
  • kwargs: 可以传递给 cairo 库的其他参数,例如设置线条宽度,颜色等;
png_data = cairosvg.svg2png(bytestring=svg_data, dpi=200, parent_width=200, parent_height=20,
                            default_font='Arial')

总结

除了在 Python 程序中进行控制外,cairosvg 还支持使用命令行来转换 SVG 图像。命令行支持所有上述参数,可以使用 --help 参数来查看详细用法。

官方网址:cairosvg

📢📢📢📢📢📢
💗 你正在阅读 【梦想橡皮擦】 的博客
👍 阅读完毕,可以点点小手赞一下
🌻 发现错误,直接评论区中指正吧
📆 橡皮擦的第 835 篇原创博客

从订购之日起,案例 5 年内保证更新

以上是关于python cairosvg 库专题博客,10分钟掌握 cairosvg的主要内容,如果未能解决你的问题,请参考以下文章

Python3 - 无法在“import cairosvg”上加载库

真的?用 ChatGPT 写一篇 Python 翻译库博客,可以打 9 分

Python计算生态的构建

NVIDIA「GPU 应用技术博客库」专题页本周在 CSDN 技术论坛上线

在Python中用Request库模拟登录:博客园(简单加密,无验证码)

专题训练之树链剖分