wsksvg - 优化升级,支持多进程处理文件和 SVG 图像转化

前言

在不断发展的前端技术中,图像的优化和处理始终是提升应用性能的关键。wsksvg 插件的最新版本在之前的基础上进行了重大升级,现支持多进程处理文件以及将 SVG 图像转化为多种其他格式的图片。这一功能的引入不仅提升了处理效率,还大幅度增强了插件的灵活性和适用性。

概述

wsksvg 是一款旨在简化图像优化和处理的工具。新版本实现了多进程文件处理,使得大批量图像处理时的性能得到显著提升。此外,用户现在可以轻松将 SVG 图像转换为 PNG、JPG、JPEG、WEBP 和 GIF 等格式。无论是开发者还是设计师,wsksvg 都能满足日常工作中的需求,助力高效开发和图像管理。

安装

npm install -g wsksvg

或者使用 yarn:

yarn global add wsksvg

node 环境要求20以上

使用

在安装和配置完成后,您可以开始使用 wsksvg 插件来优化图像文件或生成组件。以下是一些常见操作的示例:

  • 优化图像文件

    wsksvg  ./path/to/input.png 
    
  • 将 SVG 转换为 Vue 组件

    wsksvg  ./path/to/input.svg  ./path/to/output --vue
    
  • 将 SVG 转换为 React 组件

    wsksvg  ./path/to/input.svg  ./path/to/output --react
    
  • 将 SVG 转换为 Base64 编码

    wsksvg  ./path/to/input.svg  ./path/to/output --base
    
  • 将 SVG 转换为其它图片格式

    wsksvg  ./path/to/input.svg  ./path/to/output --format png
    

通过上述步骤,您可以轻松安装和配置 wsksvg 插件,以优化图像和管理 SVG 组件。

相关文章:

  1. wsksvg — SVG 转换与优化工具
  2. wsksvg - 支持SVG、JPEG、GIF、PNG、WebP格式图片的优化

新增功能

1. 多进程处理

新版本的 wsksvg 利用 CPU 核心数动态设置最大并发处理线程。通过 Worker 模块,每个文件的处理都在独立的线程中执行,显著提升了处理效率。例如,处理多个 SVG 文件时,插件能够同时启动多个工作线程,确保系统资源得到充分利用。

以下是处理文件的关键逻辑:

const worker = new Worker(path.join(__dirname, 'worker.js'), {
  workerData: { filePath, output, options },
});
2. SVG 转换为其他格式

除了优化 SVG 文件,wsksvg 现在支持将 SVG 转换为多种常见图像格式,包括 PNG、JPG、JPEG、WEBP 和 GIF。这一功能使得用户可以在不使用其他工具的情况下,轻松获取所需格式的图像文件。

  • 操作示例

    • 将 SVG 转换为 PNG:

      wsksvg input.svg --format png
      
    • 将 SVG 转换为 JPG:

      wsksvg input.svg --format jpg
      

在这里插入图片描述

3. 优化输出与进度显示

新版本提供实时进度显示,让用户在处理时可随时查看成功和失败的文件数,以及处理进度。代码中通过 updateProgress 函数实现进度反馈:

function updateProgress(successCount, failureCount, total) {
  const percent = ((successCount + failureCount) / total) * 100;
  process.stdout.write(`\rProgress: ${percent.toFixed(2)}% (Success: ${successCount}, Failures: ${failureCount})`);
}

为了增强用户体验,wsksvg 新增了输出优化和进度显示功能。在处理文件时,用户可以实时查看当前处理的文件、原始大小、优化后大小以及处理进度。这一改进使得用户能够更好地掌握处理过程,并进行必要的调整。

在这里插入图片描述

技术实现

wsksvg 的多进程处理基于 worker_threads 模块。在处理每个文件时,主线程将任务分配给工作线程,工作线程独立执行图像处理任务,完成后将结果返回给主线程。以下是一个多进程处理的核心代码示例:

import { parentPort, workerData } from 'worker_threads';
import { processSvgFile } from './processSvgFile.js';
import { processImageFile } from './processImageFile.js';
import path from 'path';

async function processFile(filePath, output, options) {
    const extname = path.extname(filePath).toLowerCase();
    if (extname === '.svg') {
        return await processSvgFile(filePath, output, options);
    } else if (['.png', '.jpg', '.jpeg', '.gif'].includes(extname)) {
        return await processImageFile(filePath, output, options);
    } else {
        throw new Error(`Unsupported file type: ${extname}`);
    }
}

(async () => {
    try {
        const { filePath, output, options } = workerData;
        const result = await processFile(filePath, output, options);
        parentPort.postMessage(result);
    } catch (error) {
        parentPort.postMessage({ error: error.message });
    }
})();

配置选项

wsksvg 插件的配置选项已得到扩展,用户可以在 wsksvg.json 文件中自定义多进程处理和图像格式转换的相关设置。这些配置使得插件在处理过程中更为灵活,以满足不同项目的需求。

应用场景

wsksvg 的多进程处理和格式转换功能非常适用于以下场景:

  1. 批量图像处理:在开发过程中,设计师可以一次性处理大量图像文件,提升工作效率。
  2. SVG 资源管理:开发者可以将 SVG 文件转化为所需的其他图像格式,方便在不同平台或框架中使用。
  3. 自动化构建流程:通过将 wsksvg 集成到构建工具中,实现自动化的图像优化和格式转换。

总结

wsksvg 的最新版本通过引入多进程处理和 SVG 转换功能,极大地增强了插件的实用性和性能。这些功能的实现,不仅优化了图像处理的效率,也为开发者和设计师提供了更灵活的工具。无论是在日常开发中还是在大型项目中,wsksvg 都将是您不可或缺的助手。

相关文章:

  1. wsksvg — SVG 转换与优化工具
  2. wsksvg - 支持SVG、JPEG、GIF、PNG、WebP格式图片的优化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/883516.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL之内置函数

目录 一、日期函数 二、字符串函数 三、数学函数 四、其它函数 一、日期函数 常见的日期函数如下: 函数名称说明current_date()获取当前日期current_time()获取当前时间current_timestamp()获取当前时间戳date_add(date, interval d_value_type)在date中添加日…

Jenkins Pipeline 中通过勾选参数来控制是否构建 Docker 镜像

1.定义参数: 使用 booleanParam 定义一个布尔参数,示例如下 booleanParam(name: BUILD_DOCKER, description: 是否构建Docker镜像, defaultValue: false)2.使用参数: 在 stage 中,根据参数的值决定构建方式: stage(编…

如何把用过的试卷恢复?5个软件帮助你快速进行试卷清除

如何把用过的试卷恢复?5个软件帮助你快速进行试卷清除 要恢复或清除用过的试卷上的答案或标记,通常涉及去除笔记、擦除手写痕迹或处理扫描件中的内容。以下五款软件可以帮助你有效地清除试卷上的文字、答案或标记,并将其恢复到空白状态&…

云原生|浅谈云原生中的对象存储之MinIO 的使用

一、什么是对象储存 对象存储(Object Storage)以对象的形式存储和管理数据,这些对象可以是任何类型的数据,例如 PDF,视频,音频,文本或其他文件类型。对象存储使用分布式存储架构,数据…

大型语言模型:通过代码生成、调试和 CI/CD 集成改变软件开发的游戏规则

文章目录 1. 引言2. 代码生成2.1 提高开发人员的生产力2.2 训练与适应 3. 使用人工智能进行调试和修复错误3.1 提高准确性的创新工具3.2 定制解决方案 4. 无缝 CI/CD 集成4.1 CI/CD 集成人工智能:可靠部署的催化剂4.2 持续学习和改进4.3 缩小开发和运营之间的差距 5…

媒界:2025河南台球及配套设施展会3月举办

立足中原,辐射全国,壹肆柒中国国际台球产业博览会3月在郑州盛大举办; 2025中国(郑州)国际台球产业博览会(壹肆柒台球展) The 2025 China (Zhengzhou) International Billiards Industry Expo …

数据库中间件Mycat

Mycat是基于Java编写的实现了MySQL协议的数据库中间件,可以将它看成一个数据库代理,可以直接用MySQL客户端工具访问。其核心功能是分库分表和读写分离。 MyCat 是基于阿里开源的 Cobar 产品而研发,Cobar 的稳定性、可靠性、优秀的架构和性能…

【JAVA开源】基于Vue和SpringBoot的学科竞赛管理系统

本文项目编号 T 047 ,文末自助获取源码 \color{red}{T047,文末自助获取源码} T047,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

【Java 集合】List接口 —— ArrayList 与 LinkedList 详解

List接口继承自Collection接口,是单列集合的一个重要分支。 在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中可以通过索引(类似于数组中的元素角标)来访问集合中的指定元素。另外&…

CSS清除浮动的多种方法

目录 非 VIP 用户可前往公众号回复“css”进行免费阅读 给浮动元素的祖先元素加高度 给 div 写一个 clear:both; 属性(margin 失效) clear:both; 隔墙法 clear:both; 内墙法 父级 div 定义伪类:after 和 zoom(推荐使用) overflow:hidden;(能够让 margin 生效) 非 …

九、成功版--windows上安装artifactory配置postgressql

centos上搞不定,windows上搞定了 现阶段是想用java写程序控制制品库,等以后研究多了需要写一些脚本的时候,在研究linux上安装artifactory(公司就用的linux安装的配置mysql,有空对着配一下linux的) 源码地…

文献管理不再难:20个Zotero插件帮你搞定

以下插件排序按照星标量进行排序,常用的插件大概是前20的样子,可以根据自己的需求进行插件的安装。 顺带提一句,插件不是越多越好,装多了可能会出现软件卡顿的情况。 1、Scholaread for Zotero 插件下载:插件下载 …

【智能大数据分析 | 实验一】MapReduce实验:单词计数

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈智能大数据分析 ⌋ ⌋ ⌋ 智能大数据分析是指利用先进的技术和算法对大规模数据进行深入分析和挖掘,以提取有价值的信息和洞察。它结合了大数据技术、人工智能(AI)、机器学习(ML&a…

阿里云云效多个ssh密钥对配置

实现功能 windows本地多个ssh密钥对,分别对应不同的阿里云账号的云效 实现办法 1.生成ssh密钥对 ssh-keygen -t rsa -f C:\xxx\id_rsa_customname(我这里C:\Users\admin\.ssh\id_rsa_customname) 2.配置.ssh目录的config文件 # ruiyi Host customnameHostName codeup.al…

java通过org.eclipse.milo实现OPCUA客户端进行连接和订阅

前言 之前写过一篇关于MQTT的方式进行物理访问的文章:SpringBoot集成MQTT,WebSocket返回前端信息_springboot mqtt websocket-CSDN博客 最近又接触到OPCUA协议,想通过java试试看能不能实现。 软件 在使用java实现之前,想着有没…

JVM 基础知识(基础组成 )

使用场景 线上系统突然宕机,系统无法访问,甚至直接 O0M;线上系统响应速度太慢,优化系统性能过程中发现 CPU 占用过高,原因也许是因为 JVM的 GC 次数过于频繁;新项目上线,需要设置 JVM的各种参数;等 JDK / JRE / JVM JDK JDK 全称 ( Java Development Kit ) ,是 Ja…

react + antDesign封装图片预览组件(支持多张图片)

需求场景:最近在开发后台系统时经常遇到图片预览问题,如果一个一个的引用antDesign的图片预览组件就有点繁琐了,于是在antDesign图片预览组件的基础上二次封装了一下,避免重复无用代码的出现 效果 公共预览组件代码 import React…

Llama 3.2来了,多模态且开源!AR眼镜黄仁勋首批体验,Quest 3S头显价格低到离谱

如果说 OpenAI 的 ChatGPT 拉开了「百模大战」的序幕,那 Meta 的 Ray-Ban Meta 智能眼镜无疑是触发「百镜大战」的导火索。自去年 9 月在 Meta Connect 2023 开发者大会上首次亮相,短短数月,Ray-Ban Meta 就突破百万销量,不仅让马…

xpath在爬虫中的应用、xpath插件的安装及使用

安装 1、打开谷歌浏览器进入扩展程序安装页面(右上角会有"开发者模式按钮")默认是关闭的,当安装此插件时需要把开发者模式打开。 2、下载下来的xpath_helper是zip格式的,需要解压缩即可安装。 3、重启浏览器,再次点击扩展程序即…

解密 Python 的 staticmethod 函数:静态方法的全面解析!

更多Python学习内容:ipengtao.com 在 Python 中,staticmethod 函数是一种装饰器,用于将函数转换为静态方法。静态方法与实例方法和类方法不同,它们不需要类实例作为第一个参数,也不需要类作为第一个参数,因…