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

news2024/11/22 2:00:33

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

python cairosvg

    • Python cairosvg 上手案例
    • cairosvg 直接将 svg 图像转换为二进制数据
    • 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 爬虫 120,点击订购 ⭐️
  • ⭐️ 爬虫 100 例教程,点击订购 ⭐️

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/168927.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

趣味三角——第1章——角

平面角是平面内相交但不在一条直线上的两条直线之间的倾角(A plane angle is the inclination to one another of two lines in a plane which meet one another and do not lie in a straight line.)。 ——Euclid(欧几里得), 元素(The Elements),定义8。 几何实体…

【C++】Hash开散列,unordered_set(map) 的封装以及迭代器的实现

上一篇博客我们使用闭散列的方式实现了 Hash,其实在STL库unordered_set、unordered_map中底层是开散列的方式实现的Hash,所以,本篇博客就再使用开散列的方式实现Hash,并将unordered_set、unordered_map进行封装。 目录 一、开散…

C 数据结构1 —— 线性表-顺序表\单链表\双链表

文章目录1. 线性表1.1 定义1.2 特点2. 顺序表(顺序存储结构)2.1 定义(存储结构代码描述)2.2 插入元素2.2.1 图形演示2.2.2 代码表示2.3 删除元素2.3.1 图形演示2.3.2 代码表示2.4 完整代码2.5 动态分配数组3. 单链表(链式存储结构)3.1 定义(存储结构代码描述)3.2 单链表的读取3…

COCO_04 展示COCO格式数据集 目标框与分割mask

文章目录1 前言2 绘制GT2.1 绘制目标框与类别2.2 绘制分割mask3 AppendixA. mask polygon格式转化为图片格式参考1 前言 上篇文章介绍了如何制作COCO个数数据集的Dataset与Dataloader,并绘制了dataloader->batch的返回的信息,https://blog.csdn.net/…

【打卡】医学搜索Query相关性判断学习赛

入坑传送门 赛事介绍 文本匹配拥有广泛的应用场景,可以用于去除重复问题和文本相似度中。在本次学习中我们将学习: 如何计算文本之间的统计距离如何训练词向量 & 无监督句子编码BERT模型搭建和训练 上述步骤都是一个NLP算法工程师必备的基础&…

【GD32F427开发板试用】02-ADC规则组连续采样

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站。作者:Stark_GS ADC 简介及特点 器件中集成了一个 12 位 2.6 MSPS 多通道 ADC。 一共有19个多路复用通道:16个外部通道,1个…

office365删除错误发送的邮件

微软喜欢变,office365删个邮件真是不容易。 --管理员登录 Connect-IPPSSession -UserPrincipalName adminmydomain.onmicrosoft.com --创建一个 "deleteemail"的搜索项目,项目名可以任意起,这个名称后面在office365安全合规门户里…

libcurl简介及其编程应用

本文为学习笔记,整合课程内容以及下列文章: 其中,libcurl函数库常用字段解读部分: 参考博文:原文地址 作者:冬冬他哥哥 目录 libcurl简介 libcurl的使用 学会开源包使用的一般步骤 包的解读 重点是看…

Spark 核心编程

文章目录Spark 核心编程一、RDD1、分布式计算模拟(1) 搭建基础的架子(2) 客户端向服务器发送计算任务Spark 核心编程 Spark 计算框架为了能够进行高并发和高吞吐的数据处理,封装了三大数据结构,用于处理不同的应用场景。三大数据结构分别是:…

【数据结构与算法理论知识点】1.1基本概念

1.1基本概念 为什么要学习数据结构与算法? AlgorithmsData StructuresPrograms---- Niklaus Wirth ( Pascal程序设计语言之父、结构化程序设计首创者、图灵奖获得者) 计算机程序:使用计算机求解问题算法是求解问题的步骤的描述:从蛮力到策…

套接字编程(二)UDP服务端与客户端的通信模拟实现

目录 一、前言 二、UDP客户端流程信息 1、创建套接字 2、为套接字绑定地址信息(不推荐) 3、发送数据(将数据放入发送缓冲区中) 4、接收数据(从socket结构体接收缓冲区中取出数据) 5、关闭套接字 三…

机器学习基本概念及问题梳理

前言:整理西瓜书第一、二章中的基本概念 待办:第二章评估方法、性能度量及后续内容未整理 下图梳理机器学习中部分概念 模型评估与选择相关知识点: 错误率(error rate, E):如果在m个样本中有a个样本分类…

WordPress安全指南:19个步骤让您的WordPress安全防线坚如磐石

谈到WordPress安全性,您可以采取很多措施来锁定您的网站,以防止黑客和漏洞影响您的电子商务网站或博客。您最不想发生的事情是一天早上醒来发现您的网站一团糟。因此,今天我们将分享许多技巧、策略和技术,您可以使用这些技巧、策略…

WEBSHELL管理工具流量特征——基础篇

前言 前一阵子帮别人做取证题目,有很多关于WEBSHELL的流量要分析,想起来还有没好好分析过于是准备写篇文章总结一下帮助大家能够快速的辨别WEBSHELL流量,下面我们展开文章来讲。 中国菜刀 这个应该是大家最熟悉的WEBSHELL管理工具&#xf…

NeuRay学习笔记

Neural Rays for Occlusion-aware Image-based Rendering 主页:https://liuyuan-pal.github.io/NeuRay/ 论文:https://arxiv.org/abs/2107.13421 Code:https://github.com/liuyuan-pal/NeuRay 效果: desktop摘要 We present a ne…

一文读懂 UniProt 数据库(2023 最新版)

一、UniProt 数据库介绍 Uniprot (Universal Protein )是包含蛋白质序列,功能信息,研究论文索引的蛋白质数据库,整合了包括EBI( European Bioinformatics Institute),SIB&#xff0…

【面试题】前端最新面试题-浏览器 dom、bom篇

原文见:语雀(https://www.yuque.com/deepstates/interview/fsitlt) ● BOM ● window对象 ○ frames ■ iframe ■ 跨窗口通信 ■ 同源策略/跨域 ○ navigator ● DOM ○ DOM结构 ○ DOM操作 ○ DOM事件 ■ 表单事件 ● 浏览器渲染 ○ 进程、…

Vue组件化编程的组件通信

对于组件化编程,组件之间的通信技术无疑是非常重要的内容,需要将细节牢牢把握。 组件通信,就是子组件放置在父组件内之后,父组件如何向子组件传递参数以及子组件如何与外部组件进行互动。 这部分的知识很重要,需要展开…

基于Ubuntu20.04搭建OpenHarmony v3.0.6的qemu仿真环境

基于Ubuntu20.04搭建OpenHarmony v3.0.6的qemu仿真环境0. 前言1. 安装Ubuntu1.1 更换华为源1.2 安装必要工具2. 下载代码2.1 解压与目录设置3. 配置环境3.1 安装库和工具3.2 设置python版本3.3 安装编译工具hb3.4 切换dash为bash4. 编译4.1 hb构建4.2 启动qemu5. 第二种环境配置…

Java之日期与时间、JDK8新增日期类、包装类、正则表达式、Arrays类、常见算法和Lambda表达式

目录日期与时间DateSimpleDateFormatCalendar概述JDK8新增日期类概述、LocalTime /LocalDate / LocalDateTimeInstantDateTimeFormatterDuration/PeriodchronoUnit包装类正则表达式Arrays类Arrays类概述,常用功能演示Arrays类对于Comparator比较器的支持常见算法选择…