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 list 合并连接字符串的方法
Mar 09 Python
Python中利用函数装饰器实现备忘功能
Mar 30 Python
在Python程序和Flask框架中使用SQLAlchemy的教程
Jun 06 Python
利用pyinstaller或virtualenv将python程序打包详解
Mar 22 Python
python+requests+unittest API接口测试实例(详解)
Jun 10 Python
python3爬取数据至mysql的方法
Jun 26 Python
Python模块的加载讲解
Jan 15 Python
在pycharm中设置显示行数的方法
Jan 16 Python
selenium处理元素定位点击无效问题
Jun 12 Python
python 实现在无序数组中找到中位数方法
Mar 03 Python
python状态机transitions库详解
Jun 02 Python
Python+OpenCV实现图片中的圆形检测
Apr 07 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初学者头疼十四条问题大总结
2008/11/12 PHP
destoon实现底部添加你是第几位访问者的方法
2014/07/15 PHP
在WordPress中实现评论头像的自定义默认和延迟加载
2015/11/24 PHP
基于JQUERY的两个ListBox子项互相调整的实现代码
2011/05/07 Javascript
关于火狐(firefox)及ie下event获取的两种方法
2012/12/27 Javascript
js子页面获取父页面数据示例
2014/05/15 Javascript
可以浮动某个物体的jquery控件用法实例
2015/07/24 Javascript
JS实现部分HTML固定页面顶部随屏滚动效果
2015/12/24 Javascript
Vue 短信验证码组件开发详解
2017/02/14 Javascript
Vue.directive自定义指令的使用详解
2017/03/10 Javascript
微信小程序内拖动图片实现移动、放大、旋转的方法
2018/09/04 Javascript
vue二级菜单导航点击选中事件的方法
2018/09/12 Javascript
vue项目持久化存储数据的实现代码
2018/10/01 Javascript
vue项目创建并引入饿了么elementUI组件的步骤
2019/04/11 Javascript
JS性能优化实现方法及优点进行
2020/08/30 Javascript
[02:40]DOTA2英雄基础教程 炼金术士
2013/12/23 DOTA
Python获取任意xml节点值的方法
2015/05/05 Python
python获取命令行输入参数列表的实例代码
2018/06/23 Python
python3实现从kafka获取数据,并解析为json格式,写入到mysql中
2019/12/23 Python
Python自动化测试笔试面试题精选
2020/03/12 Python
关于Keras Dense层整理
2020/05/21 Python
全网最详细的PyCharm+Anaconda的安装过程图解
2021/01/25 Python
Omio法国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/13 全球购物
捷克领先的户外服装及配件市场零售商:ALPINE PRO
2018/01/09 全球购物
三星英国官网:Samsung英国
2018/09/25 全球购物
威尔逊皮革:Wilsons Leather
2018/12/07 全球购物
澳大利亚最超值的自行车之家:Reid Cycles
2019/03/24 全球购物
美国健康和保健平台:healtop
2020/07/02 全球购物
大学生毕业鉴定
2014/01/31 职场文书
我为自己代言广告词
2014/03/18 职场文书
解除施工合同协议书
2014/10/17 职场文书
委托证明范本
2014/11/25 职场文书
居住证明范文
2015/06/17 职场文书
公司管理建议书
2015/09/14 职场文书
2016年第二十届“母亲节暨幸福工程救助贫困母亲活动日”活动总结
2016/04/06 职场文书
Go web入门Go pongo2模板引擎
2022/05/20 Golang