在Node.js中将SVG图像转换为PNG,JPEG,TIFF,WEBP和HEIF格式的方法


Posted in Javascript onAugust 22, 2019

介绍

你需要将SVG文件转换为PNG、JPEG、TIFF、WEBP 和 HEIF 格式吗?本文将指导你如何转换为所有这些类型的格式。

我们将使用 Node.js 和Sharp npm 包来完成大部分繁重的工作。

目录

  1. 安装 Sharp Npm 包
  2. SVG 转 PNG
  3. SVG 转 JPEG
  4. SVG 转 TIFF
  5. SVG 转 WEBP
  6. SVG 转 HEIF

安装Sharp Npm Package

首先你需要安装 npm 包。你可以使用下面的 npm 或 yarn 命令安装:

Npm

$ npm install sharp --save

Yarn

$ yarn add sharp

现在我们已经准备好开始编写一些代码并转换图像了!

SVG 转 PNG

对于第一个例子,我们将 SVG文 件转换为可移植网络图形(PNG)文件格式。确保你在项目目录的根目录中有一个可用的 SVG 文件。

这是完整的代码:

// Node.js

const sharp = require("sharp")

sharp("file.svg")
  .png()
  .toFile("new-file.png")
  .then(function(info) {
    console.log(info)
  })
  .catch(function(err) {
    console.log(err)    
  })

让我们分解代码的每个部分:

  1. 首先,导入 sharp 包并将其保存在 sharp 变量中。
  2. 然后,我们用 sharp 包来读取我们的 file.svg 文件,将其转换为 PNG 并使用 .toFile() 函数将新的 PNG文件写入你的目录。
  3. sharp 方法是一个 promise,我们用它来获取文件的 info。
  4. 最后,我们用 .catch() 方法来捕获并 console.log() 所有错误。

当你运行代码时,应该得到类似的输出:

{
  format: 'png',
  width: 2500,
  height: 527,
  channels: 4,
  premultiplied: false,
  size: 47194
}

你应该能够在项目目录中看到新的 PNG 文件。

还可以将其他选项传递给 .png() 方法来更改输出图像。这些包括压缩级别、质量、颜色等。你可以在文档中查看它们。

SVG 转 JPEG

现在,让我们将 SVG 文件转换为 JPEG 格式。确保项目目录的根目录中有一个 SVG 文件可供使用。

这是完整的代码:

const sharp = require("sharp")
sharp("file.svg")
  .png()
  .toFile("new-file.jpg")
  .then(function(info) {
    console.log(info)
  })
  .catch(function(err) {
    console.log(err)
  })

当运行代码时,你应该得到类似的输出:

{
  format: 'jpg',
  width: 2500,
  height: 527,
  channels: 4,
  premultiplied: false,
  size: 47194
}

你应该在项目目录中看到新的JPEG文件。

文档:http://sharp.pixelplumbing.com/en/stable/api-output/#png

SVG 转 TIFF

接下来,让我们将SVG文件转换为标记图像文件格式(TIFF)文件。确保你在项目目录的根目录中有一个我们可以使用的SVG文件。

这是完整的代码:

const sharp = require("sharp")

sharp("file.svg")
 .tiff()
 .toFile("new-file.tiff")
 .then(function(info) {
  console.log(info)
 })
 .catch(function(err) {
  console.log(err)
 })

当你运行代码时,应该得到类似的输出:

{
  format: 'tiff',
  width: 2500,
  height: 527,
  channels: 3,
  premultiplied: false,
  size: 65778
}

你应该在项目目录中看到新的TIFF文件。

文档:http://sharp.pixelplumbing.com/en/stable/api-output/#tiff

SVG到WEBP

接下来,将 SVG 文件转换为 WEBP 文件格式。确保你在项目目录的根目录中有一个我们可以使用的SVG文件。

这是完整的代码:

const sharp = require("sharp")

sharp("file.svg")
 .webp()
 .toFile("new-file.webp")
 .then(function(info) {
  console.log(info)
 })
 .catch(function(err) {
  console.log(err)
 })

输出:

{
 format: 'webp',
 width: 2500,
 height: 527,
 channels: 4,
 premultiplied: false,
 size: 35600
}

你应该在项目目录中看到新的WEBP文件。

文档:http://sharp.pixelplumbing.com/en/stable/api-output/#webp

SVG到HEIF

最后一个例子,让我们将 SVG 文件转换为高效图像文件(HEIF)格式。确保你在项目目录的根目录中有一个可用的SVG文件。

这是完整的代码:

const sharp = require("sharp")

sharp("file.svg")
 .png()
 .toFile("new-file.heif")
 .then(function(info) {
  console.log(info)
 })
 .catch(function(err) {
  console.log(err)
 })

你还应该在项目目录中看到新的HEIF文件。

文档:http://sharp.pixelplumbing.com/en/stable/api-output/#png

结论

希望本文能帮助你完成编码工作!也希望大家多多支持三水点靠木。

原文:https://coderrocketfuel.com/article/convert-a-svg-image-to-png-jpeg-tiff-webp-and-heif-formats-in-node-js

Javascript 相关文章推荐
JavaScript 注册事件代码
Jan 27 Javascript
window.addEventListener来解决让一个js事件执行多个函数
Dec 26 Javascript
jquery 操作两个select实现值之间的互相传递
Mar 07 Javascript
jquery.fastLiveFilter.js实现输入自动过滤的方法
Aug 11 Javascript
基于javascript实现表格的简单操作
May 21 Javascript
微信小程序开发之选项卡(窗口底部TabBar)页面切换
Apr 12 Javascript
vue小图标favicon不显示的解决方案
Sep 19 Javascript
react+redux的升级版todoList的实现
Dec 18 Javascript
微信小程序url传参写变量的方法
Aug 09 Javascript
js实现网页版贪吃蛇游戏
Feb 22 Javascript
vue实现购物车加减
May 30 Javascript
解决pycharm双击但是无法打开的情况
Oct 31 Javascript
vue使用高德地图根据坐标定位点的实现代码
Aug 22 #Javascript
ES6基础之字符串和函数的拓展详解
Aug 22 #Javascript
node实现爬虫的几种简易方式
Aug 22 #Javascript
vue router动态路由设置参数可选问题
Aug 21 #Javascript
Element ui 下拉多选时新增一个选择所有的选项
Aug 21 #Javascript
js时间转换毫秒的实例代码
Aug 21 #Javascript
VUE的history模式下除了index外其他路由404报错解决办法
Aug 21 #Javascript
You might like
Windows 下的 PHP-PEAR 安装方法
2010/11/20 PHP
PHP中文分词的简单实现代码分享
2011/07/17 PHP
PHP调用Webservice实例代码
2011/07/29 PHP
基于php split()函数的用法详解
2013/06/05 PHP
php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法
2014/11/04 PHP
Laravel 添加多语言提示信息的方法
2019/09/29 PHP
ASP.NET jQuery 实例17 通过使用jQuery validation插件校验ListBox
2012/02/03 Javascript
javascript 二进制运算技巧解析
2012/11/27 Javascript
JavaScript将Table导出到Excel实现思路及代码
2013/03/13 Javascript
给超链接添加特效鼠标移动展示提示信息且随鼠标移动
2013/10/17 Javascript
node.js中的fs.fchownSync方法使用说明
2014/12/16 Javascript
Jquery 实现checkbox全选方法
2015/01/28 Javascript
微信小程序 支付功能(前端)的实现
2017/05/24 Javascript
原生js+cookie实现购物车功能的方法分析
2017/12/21 Javascript
JS实现的缓冲运动效果示例
2018/04/30 Javascript
Vue指令v-for遍历输出JavaScript数组及json对象的常见方式小结
2019/02/11 Javascript
JS重学系列之聊聊new操作符
2019/03/04 Javascript
如何阻止小程序遮罩层下方图层滚动
2019/09/05 Javascript
layui 弹出删除确认界面的实例
2019/09/06 Javascript
Node.js学习之内置模块fs用法示例
2020/01/22 Javascript
使用Typescript和ES模块发布Node模块的方法
2020/05/25 Javascript
python中set()函数简介及实例解析
2018/01/09 Python
Python实现调用另一个路径下py文件中的函数方法总结
2018/06/07 Python
pycharm显示远程图片的实现
2019/11/04 Python
Django实现后台上传并显示图片功能
2020/05/29 Python
python如何调用java类
2020/07/05 Python
python--shutil移动文件到另一个路径的操作
2020/07/13 Python
从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)
2020/08/31 Python
利用CSS3实现自定义滚动条代码分享
2016/08/18 HTML / CSS
社区七一党员活动方案
2014/01/25 职场文书
机械电子工程专业自荐书
2014/06/10 职场文书
我为党旗添光彩演讲稿
2014/09/10 职场文书
Python中常见的反爬机制及其破解方法总结
2021/06/10 Python
游戏《铁拳》动画化!2022年年内播出
2022/03/21 日漫
Win10系统搭建ftp文件服务器详细教程
2022/08/05 Servers
HTML页面点击按钮关闭页面的多种方式
2022/12/24 HTML / CSS