Python实现批量把SVG格式转成png、pdf格式的代码分享
程序员文章站
2022-06-03 09:26:44
需要提前安装cairosvg模块,下载地址
code:
#! encoding:utf-8
import cairosvg
import os
 ...
需要提前安装cairosvg模块,下载地址
code:
#! encoding:utf-8 import cairosvg import os loop = true while loop: svgdir = raw_input("请输入svg文件目录") if os.path.exists(svgdir) and os.path.isdir(svgdir): loop = false else: print "错误:您输入的svg文件目录不存在或者不是一个有效的目录,请重新输入" loop = true while loop: exportdir = raw_input("请输入导出目录") if os.path.exists(exportdir): loop = false else: print "错误:您输入的导出目录[" , exportdir , "] 不存在,是否要创建这个目录?" loops = true while loops: msg = "" cmd = raw_input("创建 (y) 重新 (r)") if cmd.upper() == "r": loops = false elif cmd.upper() == "y": os.makedirs(exportdir, true) if os.path.exists(exportdir): loop = false loops = false else: print "创建目录失败[",exportdir,"], 请重新输入" else: print "找不到您输入的命令,请重新输入" cate = ("png", "pdf") print "导出类型:" for i in cate: print i loop = true while loop: exportformat = raw_input("请输入导出类型") if exportformat.lower() in cate: loop = false else: print "您输入的类型不存在,请重新输入" def export(fromdir, targetdir, exporttype): print "开始执行转换命令..." files = os.listdir(fromdir) num = 0 for filename in files: path = os.path.join(fromdir,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": cairosvg.svg2png(bytestring=svg, write_to=exportpath) elif exporttype == "pdf": cairosvg.svg2pdf(bytestring=svg, write_to=exportpath) exportfilehandle.close() print "success export ", exporttype, " -> " , exportpath print "已导出 ", num, "个文件" export(svgdir, exportdir, exportformat)
使用:
复制代码 代码如下:
请输入svg文件目录d:\svg
请输入导出目录d:\images
错误:您输入的导出目录[ d:\images ] 不存在,是否要创建这个目录?
创建 (y) 重新 (r)y
导出类型:
png
请输入导出类型png
开始执行转换命令...
success export png -> d:\images\a.png
success export png -> d:\images\db2.png
success export png -> d:\images\db3.png
已导出 3 个文件
复制代码 代码如下:
d:\>tree svg /f
folder path listing
volume serial number is 4603-09b2
d:\svg
a.svg
db2.svg
db3.svg
no subfolders exist
d:\>tree images /f
folder path listing
volume serial number is 4603-09b2
d:\images
a.png
db2.png
db3.png
no subfolders exist