Python实现批量把SVG格式转成png、pdf格式的代码分享


Posted in Python onAugust 21, 2014

需要提前安装cairosvg模块,下载地址http://cairosvg.org/download/

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

pdf

请输入导出类型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
Python 相关文章推荐
利用Python的Twisted框架实现webshell密码扫描器的教程
Apr 16 Python
Python计算三角函数之asin()方法的使用
May 15 Python
Python实现简单字典树的方法
Apr 29 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
Apr 23 Python
python hook监听事件详解
Oct 25 Python
Python实现的线性回归算法示例【附csv文件下载】
Dec 29 Python
使用Python的Turtle库绘制森林的实例
Dec 18 Python
pytorch sampler对数据进行采样的实现
Dec 31 Python
Python转换itertools.chain对象为数组的方法
Feb 07 Python
Python3实现建造者模式的示例代码
Jun 28 Python
python基于OpenCV模板匹配识别图片中的数字
Mar 31 Python
解决Python保存文件名太长OSError: [Errno 36] File name too long
May 11 Python
python生成日历实例解析
Aug 21 #Python
MySQLdb ImportError: libmysqlclient.so.18解决方法
Aug 21 #Python
Python中除法使用的注意事项
Aug 21 #Python
Python中dictionary items()系列函数的用法实例
Aug 21 #Python
Python 不同对象比较大小示例探讨
Aug 21 #Python
python字符串连接方式汇总
Aug 21 #Python
零基础学Python(一)Python环境安装
Aug 20 #Python
You might like
重置版战役片段
2020/04/09 魔兽争霸
比较简单的百度网盘文件直链PHP代码
2013/03/24 PHP
Netbeans 8.2将支持PHP7 更精彩
2016/06/13 PHP
PHP文件上传处理案例分析
2016/10/15 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
2018/05/11 PHP
js判断选择时间不能小于当前时间的示例代码
2013/09/24 Javascript
文本框只能选择数据到文本框禁止手动输入
2013/11/22 Javascript
使用AngularJS实现表单向导的方法
2015/06/19 Javascript
IE8兼容Jquery.validate.js的问题
2016/12/01 Javascript
vue用addRoutes实现动态路由的示例
2017/09/15 Javascript
web前端vue filter 过滤器
2018/01/12 Javascript
Vue3 源码导读(推荐)
2019/10/14 Javascript
Vue3.0中的monorepo管理模式的实现
2019/10/14 Javascript
利用Vue的v-for和v-bind实现列表颜色切换
2020/07/17 Javascript
Python显示进度条的方法
2014/09/20 Python
详解Python当中的字符串和编码
2015/04/25 Python
黑科技 Python脚本帮你找出微信上删除你好友的人
2016/01/07 Python
浅析Python中的赋值和深浅拷贝
2017/08/15 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
2018/06/14 Python
python多行字符串拼接使用小括号的方法
2020/03/19 Python
Python多线程原理与用法实例剖析
2019/01/22 Python
​如何愉快地迁移到 Python 3
2019/04/28 Python
简单的Python调度器Schedule详解
2019/08/30 Python
10行Python代码计算汽车数量的实现方法
2019/10/23 Python
有机婴儿毛毯和衣服:Monica + Andy
2020/03/01 全球购物
24岁生日感言
2014/01/13 职场文书
四年级科学教学反思
2014/02/10 职场文书
项目负责人任命书
2014/06/04 职场文书
地球物理学专业推荐信
2014/09/08 职场文书
领导班子四风查摆对照检查材料思想汇报
2014/10/05 职场文书
学生穿着不得体检讨书
2014/10/12 职场文书
秦兵马俑导游词
2015/02/02 职场文书
Vue中插槽slot的使用方法与应用场景详析
2021/06/08 Vue.js
vue.js Router中嵌套路由的实用示例
2021/06/27 Vue.js
SpringBoot深入分析讲解监听器模式下
2022/07/15 Java/Android
在ubuntu下安装go开发环境的全过程
2022/08/05 Golang