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读写Redis数据库操作示例
Mar 18 Python
Python获取脚本所在目录的正确方法
Apr 15 Python
Python实现全局变量的两个解决方法
Jul 03 Python
Python 自动补全(vim)
Nov 30 Python
python简单读取大文件的方法
Jul 01 Python
深入理解python中函数传递参数是值传递还是引用传递
Nov 07 Python
学习Python3 Dlib19.7进行人脸面部识别
Jan 24 Python
django+xadmin+djcelery实现后台管理定时任务
Aug 14 Python
Python常用的json标准库
Feb 19 Python
Python中单线程、多线程和多进程的效率对比实验实例
May 14 Python
python的常见矩阵运算(小结)
Aug 07 Python
Python实现GIF图倒放
Jul 16 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
手把手教你使用DedeCms的采集的图文教程
2007/03/11 PHP
php 什么是PEAR?(第二篇)
2009/03/19 PHP
整理的9个实用的PHP库简介和下载
2010/11/09 PHP
laravel 中如何使用ajax和vue总结
2017/08/16 PHP
JavaScript中的style.display属性操作
2013/03/27 Javascript
js showModalDialog 弹出对话框的简单实例(子窗体)
2014/01/07 Javascript
javascript抽象工厂模式详细说明
2014/12/16 Javascript
Javascript控制input输入时间格式的方法
2015/01/28 Javascript
JavaScript实现级联菜单的方法
2015/06/29 Javascript
基于jQuery仿淘宝产品图片放大镜特效
2020/10/19 Javascript
Nodejs爬虫进阶教程之异步并发控制
2016/02/15 NodeJs
JavaScript中实现键值对应的字典与哈希表结构的示例
2016/06/12 Javascript
jQuery事件用法详解
2016/10/06 Javascript
基于Vue框架vux组件库实现上拉刷新功能
2017/11/28 Javascript
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
2018/12/13 Javascript
vue多次循环操作示例
2019/02/08 Javascript
让 babel webpack vue 配置文件支持智能提示的方法
2019/06/22 Javascript
swiperjs实现导航与tab页的联动
2020/12/13 Javascript
[36:13]Mineski vs iG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python正则匹配查询港澳通行证办理进度示例分享
2013/12/27 Python
Python中计算三角函数之cos()方法的使用简介
2015/05/15 Python
Python操作Word批量生成文章的方法
2015/07/28 Python
python3.x上post发送json数据
2018/03/04 Python
详解用TensorFlow实现逻辑回归算法
2018/05/02 Python
Python面向对象类的继承实例详解
2018/06/27 Python
对python添加模块路径的三种方法总结
2018/10/16 Python
Python 中导入csv数据的三种方法
2018/11/01 Python
pytorch实现建立自己的数据集(以mnist为例)
2020/01/18 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
2020/06/15 Python
python文件路径操作方法总结
2020/12/21 Python
高分子材料与工程专业推荐信
2013/12/01 职场文书
个人求职自荐信范文
2014/06/20 职场文书
教师党员整改措施
2014/10/24 职场文书
2015年中秋晚会主持稿
2015/07/30 职场文书
Python基础之条件语句详解
2021/06/16 Python
Go结合Gin导出Mysql数据到Excel表格
2022/08/05 Golang