在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 相关文章推荐
Array对象方法参考
Oct 03 Javascript
jQuery EasyUI API 中文文档 搜索框
Sep 29 Javascript
jquery获取焦点和失去焦点事件代码
Apr 21 Javascript
简单的两种Extjs formpanel加载数据的方式
Nov 09 Javascript
js 剪切板应用clipboardData详细解析
Dec 17 Javascript
JS控制HTML元素的显示和隐藏的两种方法
Sep 27 Javascript
angular分页指令操作
Jan 09 Javascript
原生JS和jQuery操作DOM对比总结
Jan 19 Javascript
jQuery实现用户输入自动完成功能
Feb 13 Javascript
Vue实现typeahead组件功能(非常靠谱)
Aug 26 Javascript
JS实现深度优先搜索求解两点间最短路径
Jan 17 Javascript
用js限制网页只在微信浏览器中打开(或者只能手机端访问)
Dec 24 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
繁体中文转换为简体中文的PHP函数
2006/10/09 PHP
使用HMAC-SHA1签名方法详解
2013/06/26 PHP
教你在PHPStorm中配置Xdebug
2015/07/27 PHP
CI框架实现cookie登陆的方法详解
2016/05/18 PHP
PHP读取Excel类文件
2017/05/15 PHP
PHP xpath提取网页数据内容代码解析
2020/07/16 PHP
基于php+MySql实现学生信息管理系统实例
2020/08/04 PHP
jQuery 学习6 操纵元素显示效果的函数
2010/02/07 Javascript
php,js,css字符串截取的办法集锦
2014/09/26 Javascript
JavaScript分秒倒计时器实现方法
2015/02/02 Javascript
JS遍历数组及打印数组实例分析
2016/01/21 Javascript
javascript拖拽应用实例
2016/03/25 Javascript
webpack踩坑之路图片的路径与打包
2017/09/05 Javascript
详解React Native 屏幕适配(炒鸡简单的方法)
2018/06/11 Javascript
vue 通过绑定事件获取当前行的id操作
2020/07/27 Javascript
vue-cli3中配置alias和打包加hash值操作
2020/09/04 Javascript
Node.js 中如何收集和解析命令行参数
2021/01/08 Javascript
[41:08]TNC vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python序列操作之进阶篇
2016/12/08 Python
python 魔法函数实例及解析
2019/09/25 Python
python自定义函数def的应用详解
2020/06/03 Python
浅谈sklearn中predict与predict_proba区别
2020/06/28 Python
Python浮点型(float)运算结果不正确的解决方案
2020/09/22 Python
HTML5+CSS3:3D展示商品信息示例
2017/01/03 HTML / CSS
倩碧美国官网:Clinique美国
2016/07/20 全球购物
美国领先的家居装饰和礼品商店:Kirkland’s
2017/01/30 全球购物
大学本科毕业生的自我鉴定
2013/11/26 职场文书
yy婚礼主持词
2014/03/14 职场文书
2014年语文教学工作总结
2014/12/17 职场文书
职称评定个人总结
2015/03/05 职场文书
2015年重阳节慰问信
2015/03/23 职场文书
学雷锋献爱心倡议书
2015/04/27 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书
读《工匠精神》有感:热爱工作,精益求精
2019/12/28 职场文书
Oracle更换为MySQL遇到的问题及解决
2021/05/21 Oracle
Java使用httpRequest+Jsoup爬取红蓝球号码
2021/07/02 Java/Android