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实现文件复制删除
Apr 19 Python
Python+Socket实现基于UDP协议的局域网广播功能示例
Aug 31 Python
详解django三种文件下载方式
Apr 06 Python
详解通过API管理或定制开发ECS实例
Sep 30 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
Jan 08 Python
python3操作注册表的方法(Url protocol)
Feb 05 Python
基于Tensorflow批量数据的输入实现方式
Feb 05 Python
Python中包的用法及安装
Feb 11 Python
Django ORM filter() 的运用详解
May 14 Python
详解python tkinter包获取本地绝对路径(以获取图片并展示)
Sep 04 Python
Django框架实现在线考试系统的示例代码
Nov 30 Python
python中filter,map,reduce的作用
Jun 10 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下对字符串的递增运算代码
2010/08/21 PHP
PHP使用GIFEncoder类处理gif图片实例
2014/07/01 PHP
适合PHP初学者阅读的4本经典书籍
2016/09/23 PHP
php 查找数组元素提高效率的方法详解
2017/05/05 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
js单向链表的具体实现实例
2013/06/21 Javascript
jquery 新建的元素事件绑定问题解决方案
2014/06/12 Javascript
node-webkit打包成exe文件被360误报木马的解决方法
2015/03/11 Javascript
JavaScript将字符串转换为整数的方法
2015/04/14 Javascript
Jquery中request和request.form和request.querystring的区别
2015/11/26 Javascript
jquery-mobile表单的创建方法详解
2016/11/23 Javascript
jquery中$.fn和图片滚动效果实现的必备知识总结
2017/04/21 jQuery
浅谈Node.js 中间件模式
2018/06/12 Javascript
js控制随机数生成概率代码实例
2019/03/21 Javascript
Python中在脚本中引用其他文件函数的实现方法
2016/06/23 Python
Django实现自定义404,500页面教程
2017/03/26 Python
在tensorflow中实现去除不足一个batch的数据
2020/01/20 Python
Tensorflow 卷积的梯度反向传播过程
2020/02/10 Python
Python基于Hypothesis测试库生成测试数据
2020/04/29 Python
Python3-异步进程回调函数(callback())介绍
2020/05/02 Python
俄罗斯披萨、寿司和面食送货到家服务:2 Берега
2019/12/15 全球购物
地理科学专业毕业生求职信
2013/10/15 职场文书
总经理秘书的岗位职责
2013/12/27 职场文书
高校十八大报告感想
2014/01/27 职场文书
工程质量承诺书范文
2014/03/27 职场文书
土建专业大学生自荐信范文
2014/04/09 职场文书
安全目标责任书
2014/07/22 职场文书
2014年中秋节活动总结
2014/08/29 职场文书
房屋财产继承协议书范本
2014/11/03 职场文书
优秀党支部申报材料
2014/12/24 职场文书
教师个人学习总结
2015/02/11 职场文书
成绩单家长意见
2015/06/03 职场文书
未婚证明格式
2015/06/15 职场文书
MySQL中使用or、in与union all在查询命令下的效率对比
2021/05/26 MySQL
电脑只能进入安全模式无法正常启动的解决办法
2022/04/08 数码科技