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脚本生成Android SALT扰码的方法
Sep 18 Python
Python读取mp3中ID3信息的方法
Mar 05 Python
在Python中操作字典之fromkeys()方法的使用
May 21 Python
Python图算法实例分析
Aug 13 Python
Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】
Sep 28 Python
python搭建服务器实现两个Android客户端间收发消息
Apr 12 Python
Sanic框架基于类的视图用法示例
Jul 18 Python
python实现多线程端口扫描
Aug 31 Python
Django Docker容器化部署之Django-Docker本地部署
Oct 09 Python
将python文件打包exe独立运行程序方法详解
Feb 12 Python
安装python3.7编译器后如何正确安装opnecv的方法详解
Jun 16 Python
Python 如何利用ffmpeg 处理视频素材
Nov 27 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
七款最流行的PHP本地服务器分享
2013/02/19 PHP
解析php扩展php_curl.dll不加载的解决方法
2013/06/26 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
2016/05/20 PHP
PHP获取星期几的常用方法小结
2018/12/18 PHP
Yii2.0实现的批量更新及批量插入功能示例
2019/01/29 PHP
javascript  Error 对象 错误处理
2008/05/18 Javascript
JQuery textlimit 显示用户输入的字符数 限制用户输入的字符数
2009/05/14 Javascript
jquery 表单进行客户端验证demo
2009/08/24 Javascript
jquery中获得$.ajax()事件返回的值并添加事件的方法
2010/04/15 Javascript
JQuery 给元素绑定click事件多次执行的解决方法
2014/09/09 Javascript
分享一款基于jQuery的视频播放插件
2014/10/09 Javascript
js实现文字在按钮上滚动的方法
2015/08/20 Javascript
JS实现可展开折叠层的鼠标拖曳效果
2015/10/09 Javascript
在localStorage中存储对象数组并读取的方法
2016/09/24 Javascript
浅谈jquery高级方法描述与应用
2016/10/04 Javascript
详解nodejs异步I/O和事件循环
2017/06/07 NodeJs
基于daterangepicker日历插件使用参数注意的问题
2017/08/10 Javascript
详解VueRouter进阶之导航钩子和路由元信息
2017/09/13 Javascript
本地搭建微信小程序服务器的实现方法
2017/10/27 Javascript
Vue.js 动态为img的src赋值方法
2018/03/14 Javascript
js实现跟随鼠标移动的小球
2019/08/26 Javascript
Python实现提取文章摘要的方法
2015/04/21 Python
简单了解python模块概念
2018/01/11 Python
详解Python with/as使用说明
2018/12/13 Python
Python tkinter常用操作代码实例
2020/01/03 Python
python更新数据库中某个字段的数据(方法详解)
2020/11/18 Python
java字符串格式化输出实例讲解
2021/01/06 Python
matplotlib部件之矩形选区(RectangleSelector)的实现
2021/02/01 Python
webView加载html图片遇到的问题解决
2019/10/08 HTML / CSS
北美三大旅游网站之一:Travelocity加拿大
2016/08/20 全球购物
全球性的众包图形设计市场:DesignCrowd
2021/02/02 全球购物
外贸英语毕业生自荐信
2013/11/14 职场文书
保卫钓鱼岛口号
2014/06/20 职场文书
敬老院义诊活动总结
2015/05/07 职场文书
2015民办小学年度工作总结
2015/05/26 职场文书
2016年中秋节寄语大全
2015/12/07 职场文书