python CairoSVG使用教程

2021-10-01 19:31:53 字數 3222 閱讀 1507

3 參考

cairosvg是乙個將svg1.1轉為png,pdf, ps格式的轉化。svg算目前火熱的影象檔案格式了,它的英文全稱為scalable vector graphics,意思為可縮放的向量圖形,但是svg要專用軟體才能編輯開啟,通過cairsvg我們就能將svg格式轉換為常用的格式。它為類unix作業系統(至少linux和macos)和windows提供了命令列介面和python 3.5+庫。它是乙個開源軟體,具有lgplv3許可。

cairosvg用python編寫,基於著名的2d圖形庫cairo。它在來自w3c測試套件的 svg樣本上進行了測試。它還依賴tinycss2和 cssselect2來應用css,並依賴 defusedxml來檢測不安全的svg檔案。嵌入式柵格影象由pillow處理。

cariosvg僅支援python3,你可以用pip命令安裝,安裝**如下:

pip3 install cairosvg

本文主要使用2.4.2版本,當前版本的cairosvg至少需要python 3.5,但不適用於python2.x。較舊的cairosvg(1.x)版本可在python 2.x中使用,但不再受支援。cairosvg及其依賴項在安裝過程中可能需要其他工具,這些工具的名稱取決於您使用的作業系統。具體如下:

通過命令列你就可以使用cairosvg,以下**能夠將當前目錄下的image.svg檔案轉換為image.png檔案:

cairosvg image.svg -o image.png

具體cairosvg命令列引數如下:

cairosvg --help

usage: cairosvg [-h] [-v] [-f ] [-d dpi] [-w width]

[-h height] [-s scale] [-u] [--output-width output_width]

[--output-height output_height] [-o output]

input

convert svg files to other formats

positional arguments:

input input filename or url 檔名或者url鏈結名

optional arguments:

-h, --help show this help message and exit 幫助

-v, --version show program's version number and exit 版本檢視

-f --format output format 輸出格式

-d dpi, --dpi dpi ratio between 1 inch and 1 pixel 輸出影象dpi比率設定 dpi比率介於1英吋和1畫素之間

-w width, --width width width of the parent container in pixels 輸入影象寬

-h height, --height height height of the parent container in pixels 輸入影象高

-s scale, --scale scale output scaling factor 輸出影象縮放比例

-u, --unsafe resolve xml entities and allow very large files 解析xml實體

(warning: vulnerable to xxe attacks and various dos) 但是有安全問題

--output-width output_width desired output width in pixels 期望影象輸出寬

--output-height output_height desired output height in pixels 期望影象輸出高

-o output, --output output output filename 影象輸出名

支援的輸出格式是pdf,ps,png和svg(預設為 pdf)。預設output為標準輸出。如果提供了輸出檔名,則會根據副檔名自動選擇格式。這些dpi選項設定畫素與實際單位(例如,公釐和英吋)之間的比率(如規範中所述)。可以為svg檔案提供寬度和高度選項來設定容器大小。此外,如果-用作檔名,cairosvg將從標準輸入中讀取svg字串。

cairosvg為python 3.5+提供了乙個模組。該cairosvg模組提供4個功能:

這些函式需要以下命名引數之一:

他們還可以接收與命令列選項相對應的這些可選引數:

如果write_to提供了引數(檔名或類似檔案的物件),則將輸出寫入此處。否則,該函式將返回乙個位元組字串。例如:

cairosvg.svg2png(url="/path/to/input.svg", write_to="/tmp/output.png")

cairosvg.svg2pdf(file_obj=open("/path/to/input.svg", 「rb」), write_to="/tmp/output.pdf")

output = cairosvg.svg2ps(bytestring=open("/path/to/input.svg").read().encode(『utf-8』))

使用例項:

# -*- coding: utf-8 -*-

# 匯入cairosvg庫

import cairosvg

# svg轉pdf

# file_obj輸入檔名 write_to輸出檔名

cairosvg.svg2pdf(file_obj=

open

("image.svg"

,"rb"

), write_to=

"output.pdf"

)# svg轉png

# file_obj輸入檔名 write_to輸出檔名 scale輸出影象放大倍數

cairosvg.svg2png(file_obj=

open

("image.svg"

,"rb"

), write_to=

"d:/output.png"

,scale=

3.0)

VMware License Server使用經驗

近期在測試vmware server,在使用vmware license server的時候碰到一些問題,經過兩天的實驗,問題得以解決,現記錄如下,以供朋友們參考。1 複製license檔案 在安裝vmware virtualcenter的時候,會一同安裝license server伺服器。如果你在...

Django Rest framework使用例項

一 修改配置檔案 setting.py django.contrib.admin django.contrib.auth django.contrib.contenttypes django.contrib.sessions django.contrib.messages django.contri...

Android AlarmManager 使用指南

intent intent new intent intent.setaction updatemgr.check update action 如果你的flag 是flag one shot,那麼你就只能受到一次廣播。如果使用setrepeat,你設定的intervalmills 少於60s,那麼就...