使用Python批量转换SVG文件为PNG或PDF文件。
1. 使用模块
cairosvg模块可以对svg格式图片进行转换和处理的python模块,下载地址(
http://cairosvg.org/download/
),安装方法:
pip install cairosvg
。
1.1 模块单独使用
Usage: cairosvg.py filename [options]
Options:
-h, –help show this help message and exit
-v, –version show version and exit
-f FORMAT, –format=FORMAT
output format
-d DPI, –dpi=DPI ratio between 1in and 1px
-o OUTPUT, –output=OUTPUT
output filename
1.2 模块用于代码
提供API接口:
svg2pdf
svg2png
2. 实例
2.1 命令行方式
# Convert to pdf, standard output
cairosvg test.svg
# Convert to png, standard output
cairosvg test.svg -f png
# Convert to ps, write to test.ps
cairosvg test.svg -o test.ps
# Convert an SVG string to pdf, standard output
echo "<svg height='30' width='30'>\
<text y='10'>123</text>\
</svg>" | cairosvg -
2.2 python脚本
import cairosvg
import os
def exportsvg(fromDir, targetDir, exportType):
print "开始执行转换命令..."
num = 0
for a,f,c in os.walk(fromDir):
for fileName in c:
path = os.path.join(a,fileName)
if os.path.isfile(path) and fileName[-3:] == "svg":
num += 1
fileHandle = open(path)
svg = fileHandle.read()
fileHandle.close()
exportPath = os.path.join(targetDir, fileName[:-3] + exportType)
exportFileHandle = open(exportPath,'w')
if exportType == "png":
try:
cairosvg.svg2png(bytestring=svg, write_to=exportPath)
except:
print "error in convert svg file : %s to png."%(path)
elif exportType == "pdf":
try:
cairosvg.svg2pdf(bytestring=svg, write_to=exportPath)
except:
print "error in convert svg file: %s to pdf."%(path)
exportFileHandle.close()
print "Success Export ", exportType, " -> " , exportPath
print "已导出 ", num, "个文件"
svgDir = '/home/ubuntu/tools/icons'
exportDir = '/home/ubuntu/tools/icons1'
exportFormat = 'png'
if not os.path.exists(exportDir):
os.mkdir(exportDir)
exportsvg(svgDir, exportDir, exportFormat)
cairosvg使用简单,转换方便。
继json和xml之后,需要处理
SVG
格式的图像数据。这次没有想象中的顺利,找了几种方案最后才成功。
转换
SVG
格式用到的是cairo
svg
库,但是安装的时候失败了很多次,主要是下载过程经常中断,需要耐心,别急。
这个库不再支持
python
2,要求在
python
3下
使用
,安装指令如下:
sudo pip3 install cairo
svg
从
SVG
转
到
PNG
格式,命令行输入:
cai...
最近做的实习,带我的导师直接给我的
svg
格式的图片,我要把它放到ppt里,但是直接复制似乎不能显示出来
但是可以用IE浏览器打开,然后再复制,但是我的图片太多了,直接写个
批量
会比较好
用到了一个cairo
svg
库,安装之后,运行依然会提示缺少某个库。
参看了一些博客,需要安装GTK,安装攻略可看https://www.cnblogs.com/ya
ng
jin-55/archive/2009/03/20/2786824.html
里面有下载连接,按攻略安装就可以运行了
还有另外一个问题是cairos.
*本软件可以
批量
的将
文件
夹下的
SVG
文件
转
成
PNG
、JPG、BMP等图片格式
*本软件基于.net framework 3.5生成,通常win7及以上自带有,如果没有环境无法运行请自行下载
*需将
SVG
.DLL和软件放在同一根目录下
*本软件开源,地址
为
https://gi
th
ub.com/LeeCarry/
SVG
ToImage ,欢迎各位有需求的大佬改完代码后提交pull request
SVG
:Scalable Vector Graphics。是矢量格式的图片。
我现在需要工具来帮我
批量
将
SVG
格式的图片
转换
为
PNG
。查阅资料发现可以用Cairo
SVG
做这件事。
本篇的目标是在官方文档的指导下尝试其功能,并完成
批量
转换
的任务。
Cairo
SVG
是什么
Cairo
SVG
is a
SVG
1.1 to
PNG
,
PDF
, PS and
SVG
converter. It provides bo
th
a command-line interface and
Python
3.5+ li
针对
python
的
pdf
转
png
的一些问题总结
参考大神的方法,原文:https://blog.csdn.net/sweeper_freedoman/article/details/53000145
直接co
py
了代码过来发现了一些问题,很初级,但对于初学
python
和
使用
命令行键入的我来说,还是研究了一番,一下对开发过程中产生的问题和相关的解决方案进行总结。
关于安装
Python
Magick...
以上不用介绍了,直接上代码,如下:# -*- codi
ng
: UTF-8 -*-
import sys
from reportlab.lib.pagesizes import portrait
from reportlab.
pdf
gen import canvas
from PIL import Image
def imgto
pdf
(input_pa
th
s, outputpa
th
):
俊浩69535:
python threading中处理主进程和子线程的关系
WPP7: