使用Python批量转换SVG文件为PNG或PDF文件。

1. 使用模块

cairosvg模块可以对svg格式图片进行转换和处理的python模块,下载地址( http://cairosvg.org/download/ ),安装方法: pip install cairosvg 。

1.1 模块单独使用

Usage: cairosvg.py filename [options]

Options:
-h, –help show this help message and exit
-v, –version show version and exit
-f FORMAT, –format=FORMAT
output format
-d DPI, –dpi=DPI ratio between 1in and 1px
-o OUTPUT, –output=OUTPUT
output filename

1.2 模块用于代码

提供API接口:
svg2pdf
svg2png

2. 实例

2.1 命令行方式

# Convert to pdf, standard output
cairosvg test.svg
# Convert to png, standard output
cairosvg test.svg -f png
# Convert to ps, write to test.ps
cairosvg test.svg -o test.ps
# Convert an SVG string to pdf, standard output
echo "<svg height='30' width='30'>\
      <text y='10'>123</text>\
      </svg>" | cairosvg -

2.2 python脚本

#! encoding:UTF-8
import cairosvg
import os
def exportsvg(fromDir, targetDir, exportType):
    print "开始执行转换命令..."
    num = 0
    for a,f,c in os.walk(fromDir):#使用walk遍历源目录
        for fileName in c:
            path = os.path.join(a,fileName)#获得文件路径
            if os.path.isfile(path) and fileName[-3:] == "svg":#判断文件是否为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":
                    try:
                        cairosvg.svg2png(bytestring=svg, write_to=exportPath)#转换为png文件
                    except:
                        print "error in convert svg file : %s to png."%(path)                   
                elif exportType == "pdf":
                    try:
                        cairosvg.svg2pdf(bytestring=svg, write_to=exportPath)#转换为pdf文件
                    except:
                        print "error in convert svg file: %s to pdf."%(path)                   
                exportFileHandle.close()
                print "Success Export ", exportType, " -> " , exportPath
    print "已导出 ", num, "个文件"#统计转换文件数量
#---------------------------------------
svgDir = '/home/ubuntu/tools/icons'#svg文件夹路径
exportDir = '/home/ubuntu/tools/icons1'#目的文件夹路径
exportFormat = 'png'#pdf#转换类型
if not os.path.exists(exportDir):
    os.mkdir(exportDir)
exportsvg(svgDir, exportDir, exportFormat)#转换主函数
#---------------------------------------

cairosvg使用简单,转换方便。

继json和xml之后,需要处理 SVG 格式的图像数据。这次没有想象中的顺利,找了几种方案最后才成功。 转换 SVG 格式用到的是cairo svg 库,但是安装的时候失败了很多次,主要是下载过程经常中断,需要耐心,别急。 这个库不再支持 python 2,要求在 python 3下 使用 ,安装指令如下: sudo pip3 install cairo svg 从 SVG 转 到 PNG 格式,命令行输入: cai...
最近做的实习,带我的导师直接给我的 svg 格式的图片,我要把它放到ppt里,但是直接复制似乎不能显示出来 但是可以用IE浏览器打开,然后再复制,但是我的图片太多了,直接写个 批量 会比较好 用到了一个cairo svg 库,安装之后,运行依然会提示缺少某个库。 参看了一些博客,需要安装GTK,安装攻略可看https://www.cnblogs.com/ya ng jin-55/archive/2009/03/20/2786824.html 里面有下载连接,按攻略安装就可以运行了 还有另外一个问题是cairos.
*本软件可以 批量 的将 文件 夹下的 SVG 文件 转 成 PNG 、JPG、BMP等图片格式 *本软件基于.net framework 3.5生成,通常win7及以上自带有,如果没有环境无法运行请自行下载 *需将 SVG .DLL和软件放在同一根目录下 *本软件开源,地址 为 https://gi th ub.com/LeeCarry/ SVG ToImage ,欢迎各位有需求的大佬改完代码后提交pull request
SVG :Scalable Vector Graphics。是矢量格式的图片。 我现在需要工具来帮我 批量 将 SVG 格式的图片 转换 为 PNG 。查阅资料发现可以用Cairo SVG 做这件事。 本篇的目标是在官方文档的指导下尝试其功能,并完成 批量 转换 的任务。 Cairo SVG 是什么 Cairo SVG is a SVG 1.1 to PNG , PDF , PS and SVG converter. It provides bo th a command-line interface and Python 3.5+ li
针对 python 的 pdf 转 png 的一些问题总结 参考大神的方法,原文:https://blog.csdn.net/sweeper_freedoman/article/details/53000145 直接co py 了代码过来发现了一些问题,很初级,但对于初学 python 和 使用 命令行键入的我来说,还是研究了一番,一下对开发过程中产生的问题和相关的解决方案进行总结。 关于安装 Python Magick...
以上不用介绍了,直接上代码,如下:# -*- codi ng : UTF-8 -*- import sys from reportlab.lib.pagesizes import portrait from reportlab. pdf gen import canvas from PIL import Image def imgto pdf (input_pa th s, outputpa th ): 俊浩69535: 1、join,不是主进程必须等待子线程结束才能往下执行,而是会阻塞调用join()方法这个线程。如果在主进程(主线程)里只开启一个线程t1,在主进程(主线程)不调用t1.join(),并且在t1线程里面在新开始一个线程t2,并且调用t2.join()。你会发现主线程已经结束了,而t1线程还在等待t2线程结束才往下执行,而主线程在线程t1阻塞的时候也会往下执行。 2、setDaemon是把线程设置为守护线程,当所有非守护线程都结束后,进程也会结束。只要还有非守护线程没结束,进程就不会结束。 python threading中处理主进程和子线程的关系 WPP7: threading