python 批量svg转ico脚本


# pip install Wand
from wand.image import Image
import os

INPUT_PATH = r'C:\Users\Administrator\Desktop\svg'
OUTPUT_PATH = r'C:\Users\Administrator\Desktop\ico'

def EnumPathFiles(path, callback):
    if not os.path.isdir(path):
        print('Error:"',path,'" is not a directory or does not exist.')
        return
    list_dirs = os.walk(path)

    for root, dirs, files in list_dirs:
        for d in dirs:
            EnumPathFiles(os.path.join(root, d), callback)
        for f in files:
            callback(root, f)

def svg2ico(path, filename):
    filename=str(filename)
    i = filename.index('.')
    fname = filename[:i]
    fext = filename[i:]
    if fext !='.svg': return

    input_file = str(path+'\\'+filename)
    output_file = OUTPUT_PATH + '\\' + fname + '.ico'
    print(output_file)
    with Image(width=128, height=128, filename=input_file) as ico:
        with Image(width=64, height=64, filename=input_file) as sico:
            ico.sequence.append(sico)
        with Image(width=48, height=48, filename=input_file) as sico:
            ico.sequence.append(sico)
        with Image(width=32, height=32, filename=input_file) as sico:
            ico.sequence.append(sico)
        with Image(width=16, height=16, filename=input_file) as sico:
            ico.sequence.append(sico)
        ico.save(filename=output_file)

if __name__ == '__main__':
    EnumPathFiles(INPUT_PATH, svg2ico)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将 SVG 换为 ICO 文件,你可以使用 Node.js 中的 `svg2img` 和 `icojs` 模块。以下是一个简单的示例代码: ```js const fs = require('fs'); const svg2img = require('svg2img'); const icojs = require('icojs'); // 读取 SVG 文件 const svg = fs.readFileSync('path/to/svg/file.svg', 'utf-8'); // 将 SVG 换为 PNG svg2img(svg, function(error, buffer) { if (error) { console.error(error); return; } // 将 PNG 换为 ICO icojs.fromPNG(buffer).then(buf => { // 将 ICO 写入文件 fs.writeFileSync('path/to/ico/file.ico', buf); }).catch(error => { console.error(error); }); }); ``` 在上面的代码中,我们首先使用 `fs.readFileSync` 方法读取 SVG 文件的内容,然后将其传递给 `svg2img` 方法进行换。`svg2img` 方法接受两个参数:SVG 字符串和回调函数。回调函数会在换完成后被调用,如果有错误发生则会将错误对象作为第一个参数传递给回调函数,否则将生成的 PNG 图像的二进制数据作为第二个参数传递给回调函数。我们可以使用 `icojs.fromPNG` 方法将生成的 PNG 图像换为 ICO 文件,该方法返回一个 Promise 对象,如果换成功则会将 ICO 文件的二进制数据作为参数传递给 Promise 的 `then` 方法,否则会将错误对象作为参数传递给 Promise 的 `catch` 方法。最后,我们可以使用 `fs.writeFileSync` 方法将生成的 ICO 文件写入文件。 需要注意的是,`svg2img` 模块依赖于 libcairo 和 libjpeg 等库,因此在使用之前需要先安装这些库,具体安装方法可以参考模块的文档。另外,`icojs` 模块依赖于 ImageMagick 库,因此在使用之前需要先安装该库,具体安装方法可以参考模块的文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值