一文帶你了解Python與svg之間的操作
Python 操作 SVG 圖片的庫清單
在 Python 中,可以使用以下幾種庫來生成 SVG 圖片:
svgwrite:這是一個簡單易用的 Python 庫,可以用來生成簡單的 SVG 圖片。使用方法類似于繪圖,可以在 SVG 畫布上畫線、矩形、圓等圖形。
cairosvg:這是一個基于 Cairo 庫的 SVG 庫,可以用來將 SVG 轉(zhuǎn)換為其他圖片格式,如 PNG、PDF 等。
lxml:這是一個基于 xml 的庫,可以用來生成和解析 SVG 圖片。
svg.path:這是一個專門用于處理 SVG 路徑的庫,可以用來生成復(fù)雜的 SVG 圖形。
在接下來的幾篇博客中,我們將為你逐步解析上述庫。
svgwrite 庫
svgwrite 是一個 Python 庫,用于生成簡單的 SVG 圖片。它提供了一組類似于繪圖的 API,使用者可以在 SVG 畫布上畫線、矩形、圓等圖形。
該庫下載與說明地址:https://pypi.org/project/svgwrite/

該庫有如下特點(diǎn):
- 支持多種基本圖形繪制,如線條、矩形、圓、橢圓、弧線、多邊形等;
- 支持文本繪制,可以指定字體、大小、顏色等樣式;
- 支持組合圖形繪制,如嵌套、并列、重疊等;
- 支持樣式定義,可以為圖形定義顏色、線條寬度、透明度等樣式;
- 支持事件定義,可以為圖形定義鼠標(biāo)點(diǎn)擊、鼠標(biāo)移入等事件;
- 支持動畫定義,可以為圖形定義動畫效果。
下面我們用 svgwrite 生成一個 SVG 圖片,步驟如下:
創(chuàng)建一個 Drawing 對象,并指定保存的文件名和 SVG 的版本。
- 使用 add() 方法向畫布上添加圖形。
- 使用 save() 方法保存 SVG 圖片。
- 使用下述代碼會在 Python 文件所在目錄生成一個綠色矩形。
import svgwrite
dwg = svgwrite.Drawing('ca_green.svg', profile='tiny')
dwg.add(dwg.add(dwg.rect(insert=(0, 0), size=("100%", "100%"), rx=None, ry=None, fill='green')))
dwg.save()并且我們可以看到生成的 svg 文件內(nèi)容如下所示。

<?xml version="1.0" encoding="utf-8" ?> <svg baseProfile="tiny" height="100%" version="1.2" width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xlink="http://www.w3.org/1999/xlink"><defs /><rect fill="green" height="100%" width="100%" x="0" y="0" /><rect fill="green" height="100%" width="100%" x="0" y="0" /></svg>
svgwrite 庫其他圖形繪制
線條
dwg.add(dwg.line((0, 0), (100, 100), stroke=svgwrite.rgb(10, 10, 16, '%')))
圓形
dwg.add(dwg.circle(center=(100, 100), r=40, fill='#03a9f4'))
多邊形
points = [(0, 0), (30, 30), (30, 0)] dwg.add(dwg.polygon(points=points))
這些都是非?;镜膱D形,使用比較簡單。

儲備反爬技術(shù) svgwrite 生成一個手機(jī)號
在后續(xù)的反爬實(shí)戰(zhàn)中,我們需要動態(tài)渲染手機(jī)號碼,因此這里需要用到 svg 生成手機(jī)號效果,代碼示例如下。
import svgwrite
dwg = svgwrite.Drawing('phone_number.svg',size=(100,20), profile='tiny')
dwg.add(dwg.rect(insert=(0, 0), size=(100, 20), fill='red'))
phone_number = '1234567890'
dwg.add(dwg.text(phone_number, insert=(0, 15), fill='black', font_size=12))
dwg.save()
運(yùn)行代碼,會在紅色矩形上生成一個黑色的手機(jī)號碼。

為了便于我們進(jìn)行數(shù)字加密,還可以使用 svgwrite 庫隨機(jī)生成 1-10 之間的數(shù)字。
import svgwrite
import random
dwg = svgwrite.Drawing('random_numbers.svg', size=(200, 20), profile='tiny')
nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
random.shuffle(nums)
for i, num in enumerate(nums):
text = dwg.add(dwg.text(str(num), insert=(i * 20, 20), fill='black', font_size=16))
dwg.save()運(yùn)行之后的效果如下所示,這里一定要掌握,后期咱們有大用。

到此這篇關(guān)于一文帶你了解Python與svg之間的操作的文章就介紹到這了,更多相關(guān)Python操作svg內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 使用Python插入SVG到PDF文檔中的方法示例
- 使用Python實(shí)現(xiàn)Excel文件轉(zhuǎn)換為SVG格式
- Python實(shí)現(xiàn)Word文檔轉(zhuǎn)換為圖片(JPG、PNG、SVG等常見格式)
- 使用Python代碼實(shí)現(xiàn)PDF文檔與SVG文件之間的轉(zhuǎn)換
- python Pygal庫生成SVG(可縮放矢量圖形)圖表示例
- python之matplotlib矢量圖svg?emf
- python利用lxml庫剩下操作svg圖片
- Python3.7將普通圖片(png)轉(zhuǎn)換為SVG圖片格式(網(wǎng)站logo圖標(biāo))動起來
- Python中CairoSVG庫的使用教程
相關(guān)文章
基于Python實(shí)現(xiàn)自制CV剪貼板功能
云桌面的win10不能調(diào)出剪貼板,對于CV工程師來說十分不方便,所以這篇文章主要介紹了如何使用Python實(shí)現(xiàn)一個CV剪貼板,提升常用語句的復(fù)制粘貼效率,感興趣的可以了解下2024-02-02
Python 中的Schema數(shù)據(jù)結(jié)構(gòu)及類型校驗(yàn)詳解
schema?是一個簡單而強(qiáng)大的庫,用于定義和驗(yàn)證 Python 數(shù)據(jù)結(jié)構(gòu)的約束,使用?schema?庫來執(zhí)行數(shù)據(jù)結(jié)構(gòu)的校驗(yàn),本文給大家介紹Python 中的Schema數(shù)據(jù)結(jié)構(gòu)及類型校驗(yàn),感興趣的朋友一起看看吧2023-11-11
python圖形界面開發(fā)之wxPython樹控件使用方法詳解
這篇文章主要介紹了python圖形界面開發(fā)之wxPython樹控件使用方法詳解,需要的朋友可以參考下2020-02-02
Python tkinter的grid布局及Text動態(tài)顯示方法
今天小編就為大家分享一篇Python tkinter的grid布局及Text動態(tài)顯示方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10
如何利用python多線程爬取天氣網(wǎng)站圖片并保存
最近做個天 氣方面的APP需要用到一些天氣數(shù)據(jù),所以下面這篇文章主要給大家介紹了關(guān)于如何利用python多線程爬取天氣網(wǎng)站圖片并保存的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-11-11
python中使用正則表達(dá)式的后向搜索肯定模式(推薦)
這篇文章主要介紹了python里使用正則表達(dá)式的后向搜索肯定模式,本文通過代碼介紹的非常詳細(xì),包括語法介紹,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-11-11

