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简单获取自身外网IP的方法
Sep 18 Python
使用python调用zxing库生成二维码图片详解
Jan 10 Python
Python中关键字nonlocal和global的声明与解析
Mar 12 Python
对python当中不在本路径的py文件的引用详解
Dec 15 Python
pyqt 实现在Widgets中显示图片和文字的方法
Jun 13 Python
python的mysql数据库建立表与插入数据操作示例
Sep 30 Python
Python装饰器原理与基本用法分析
Jan 07 Python
Python图像处理库PIL的ImageFont模块使用介绍
Feb 26 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
Mar 09 Python
Python importlib动态导入模块实现代码
Apr 16 Python
详解Python 中的 defaultdict 数据类型
Feb 22 Python
Python实现Excel文件的合并(以新冠疫情数据为例)
Mar 20 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中字符串长度的截取用法示例
2017/01/12 PHP
PHP正则+Snoopy抓取框架实现的抓取淘宝店信誉功能实例
2017/05/17 PHP
PHP学习笔记之session
2018/05/06 PHP
百度 popup.js 完美修正版非常的不错 脚本之家推荐
2009/04/17 Javascript
WEB页子窗口(showModalDialog和showModelessDialog)使用说明
2009/10/25 Javascript
javascript 读取XML数据,在页面中展现、编辑、保存的实现
2009/10/27 Javascript
js 创建快捷方式的代码(fso)
2010/11/19 Javascript
javascript五图轮播切换实用版
2012/08/17 Javascript
jQuery插件Zclip实现完美兼容个浏览器点击复制内容到剪贴板
2015/04/30 Javascript
jQuery使用cookie与json简单实现购物车功能
2016/04/15 Javascript
基于jquery实现三级下拉菜单
2016/05/10 Javascript
JS公共小方法之判断对象是否为domElement的实例
2016/11/25 Javascript
100多个基础常用JS函数和语法集合大全
2017/02/16 Javascript
5分钟打造简易高效的webpack常用配置
2017/07/04 Javascript
解决Layui 表单提交数据为空的问题
2018/08/15 Javascript
JavaScript 对引擎、运行时、调用堆栈的概述理解
2018/10/22 Javascript
Bootstrap 实现表格样式、表单布局的实例代码
2018/12/09 Javascript
使用VUE+iView+.Net Core上传图片的方法示例
2019/01/04 Javascript
vue element-ui中table合计指定列求和实例
2020/11/02 Javascript
Python标准库之循环器(itertools)介绍
2014/11/25 Python
浅谈Python单向链表的实现
2015/12/24 Python
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
2016/04/12 Python
django如何连接已存在数据的数据库
2018/08/14 Python
Django认证系统user对象实现过程解析
2020/03/02 Python
jupyter 使用Pillow包显示图像时inline显示方式
2020/04/24 Python
django创建超级用户时指定添加其它字段方式
2020/05/14 Python
amaze ui 的使用详细教程
2020/08/19 HTML / CSS
学前班教师的自我鉴定
2013/12/05 职场文书
车间操作工岗位职责
2013/12/19 职场文书
初三家长会邀请函
2014/01/18 职场文书
餐饮企业总经理岗位职责范文
2014/02/18 职场文书
2014高三学生考试作弊检讨书
2014/12/14 职场文书
感恩母亲节活动总结
2015/02/10 职场文书
内勤岗位职责
2015/02/10 职场文书
Go语言使用select{}阻塞main函数介绍
2021/04/25 Golang
MySQL8.0 Undo Tablespace管理详解
2022/06/16 MySQL