• 在Ubuntu中使用Cairosvg将svg批量转换为png


    对于svg格式转换成png格式,我们需通过Inkspace可以一张张转换,如果需要进行批量转换,我们可以在使用cairosvg来实现这个功能。

    关于CairoSVG

    CairoSVG简介:

    • 可以将 SVG1.1格式的文件转换成 PNG、PDF、PS 和 SVG 的转换器
    • 支持命令行界面操作
    • 需要至少Python 3.6+ 以上版本支持
    • 在 Linux、OS X 和 Windows 上可以运行
    • 基于 Cairo 2D 图形库
    • 使用 W3C 测试套件进行测试;
    • LGPLv3 许可的免费软件。

    检查 Python 版本

    Ubuntu 默认预装了Python,如果系统版本不是很老的话一般都满足Python的最低版本要求。

    python3 -V
    
    • 1

    输出如下图: Pyhton 版本 3.10.6

    安装 cairosvg

    sudo apt install cairosvg -y
    
    • 1

    命令参数

    在cmd中输入 cairosvg --h 来获取命令帮助

    usage: cairosvg [-h] [-v] [-f {eps,pdf,png,ps,svg}] [-d DPI] [-W WIDTH]
                    [-H HEIGHT] [-s SCALE] [-b COLOR] [-n] [-i] [-u]
                    [--output-width OUTPUT_WIDTH] [--output-height OUTPUT_HEIGHT]
                    [-o OUTPUT]
                    input
    
    Convert SVG files to other formats
    
    positional arguments:
      input                 input filename or URL
    
    options:
      -h, --help            show this help message and exit
      -v, --version         show program's version number and exit
      -f {eps,pdf,png,ps,svg}, --format {eps,pdf,png,ps,svg}
                            output format
      -d DPI, --dpi DPI     ratio between 1 inch and 1 pixel
      -W WIDTH, --width WIDTH
                            width of the parent container in pixels
      -H HEIGHT, --height HEIGHT
                            height of the parent container in pixels
      -s SCALE, --scale SCALE
                            output scaling factor
      -b COLOR, --background COLOR
                            output background color
      -n, --negate-colors   replace every vector color with its complement
      -i, --invert-images   replace every raster pixel with its complementary
                            color
      -u, --unsafe          resolve XML entities and allow very large files
                            (WARNING: vulnerable to XXE attacks and various DoS)
      --output-width OUTPUT_WIDTH
                            desired output width in pixels
      --output-height OUTPUT_HEIGHT
                            desired output height in pixels
      -o OUTPUT, --output OUTPUT
                            output filename
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    转换命令

    cairosvg filename.svg -o newfilename.png
    
    • 1

    执行命令后,目录下就立即生成了png格式的图片。

    使用Python批量转换

    创建svg2png.py文件,将以下代码粘贴进去后保存

    import cairosvg
    import os
    
    inputFolder = "/home/anan/Pictures/svg"    #输入的文件夹,里面有svg
    outputFolder = "/home/anan/Pictures/png"  #输出的文件夹,将把结果放到此文件夹中,需要先创建好目录。
    
    for root, dirs, files in os.walk(inputFolder):#遍历所有的文件
    	for f in files:
    		svgFile = os.path.join(root,f)  #svg文件名
    		if f[-3:] == "svg":#确保是svg
    			pngFile = outputFolder + "/" + f.replace("svg","png") #png文件名
    			try: 
    				cairosvg.svg2png(url=svgFile, write_to=pngFile, dpi=1900)
    			except:
    				print('error =>' + pngFile)
    			finally:
    				print('file => ' + pngFile)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    执行转换

    python3 svg2png.py
    
    • 1

    执行命令后,我们进入png目录可以看到图片均已转换完成

    注:png文件为透明背景的位图,只有 Fireworks 保存的 fw.png文件为矢量原图

  • 相关阅读:
    算法练习13——跳跃游戏II
    Redis实现微博好友功能微服务(关注,取关,共同关注)
    第十章:异常
    ABAP:调用HTTP接口详解
    创建Prism项目
    springboot摄影器材设备租赁系统java
    oracle学习42-增加表空间
    如何使用http来获取thingsbord中的设备数据
    数据结构与算法3---栈与队
    CentOS7 Soft RoCE v2
  • 原文地址:https://blog.csdn.net/no1xium/article/details/127670985