在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 相关文章推荐
Jquery之Ajax运用 学习运用篇
Sep 26 Javascript
js调用css属性写法
Sep 21 Javascript
javascript 实现子父窗体互相传值的简单实例
Feb 17 Javascript
Js实现自定义右键行为
Mar 26 Javascript
jqPlot jQuery绘图插件的使用
Jun 18 Javascript
js实现抽奖效果
Mar 27 Javascript
Vue2.0 多 Tab切换组件的封装实例
Jul 28 Javascript
web前端vue之CSS过渡效果示例
Jan 10 Javascript
Vue之mixin全局的用法详解
Aug 22 Javascript
angularJS1 url中携带参数的获取方法
Oct 09 Javascript
Angular PWA使用的Demo示例
Jan 31 Javascript
Vue-drag-resize 拖拽缩放插件的使用(简单示例)
Dec 04 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在DOS命令行下却无法链接MySQL的技术笔记
2010/12/29 PHP
php xml常用函数的集合(比较详细)
2013/06/06 PHP
PHP使用redis实现统计缓存mysql压力的方法
2015/11/14 PHP
详解PHP对数组的定义以及数组的创建方法
2015/11/27 PHP
PHP学习笔记之php文件操作
2016/06/03 PHP
php数据结构之顺序链表与链式线性表示例
2018/01/22 PHP
php 字符串中是否包含指定字符串的多种方法
2018/04/12 PHP
javascript 拖放效果实现代码
2010/01/22 Javascript
JQuery datepicker 使用方法
2011/05/20 Javascript
Javascript中的async awai的用法
2017/05/17 Javascript
JavaScript用200行代码制作打飞机小游戏实例
2017/06/21 Javascript
详解vue-router和vue-cli以及组件之间的传值
2017/07/04 Javascript
JS开发 富文本编辑器TinyMCE详解
2019/07/19 Javascript
微信小程序图片右边加两行文字的代码
2020/04/23 Javascript
[01:45]2014DOTA2 TI预选赛预选赛 大神专访第二弹!
2014/05/20 DOTA
[03:22]DSPL第一期精彩集锦:酷炫到底!
2014/11/07 DOTA
详解Python迭代和迭代器
2016/03/28 Python
python机器学习理论与实战(一)K近邻法
2021/01/28 Python
python读取csv和txt数据转换成向量的实例
2019/02/12 Python
Django中间件基础用法详解
2019/07/18 Python
python json load json 数据后出现乱序的解决方案
2020/02/27 Python
IDLE下Python文件编辑和运行操作
2020/04/25 Python
python读取excel数据并且画图的实现示例
2021/02/08 Python
css3学习系列之移动属性详解
2017/07/04 HTML / CSS
世界上最大的街头服饰网站:Karmaloop
2017/02/04 全球购物
总经理职责
2013/12/22 职场文书
青年创业培训欢迎词
2014/01/10 职场文书
护士辞职信模板
2014/01/20 职场文书
数控个人求职信范文
2014/02/03 职场文书
优秀毕业生事迹材料
2014/02/12 职场文书
大学新闻系应届生求职信
2014/06/02 职场文书
解除租房协议书
2014/12/03 职场文书
社区六一儿童节活动总结
2015/02/11 职场文书
小学四年级班主任工作经验交流材料
2015/11/02 职场文书
如何判断pytorch是否支持GPU加速
2021/06/01 Python
vue中利用mqtt服务端实现即时通讯的步骤记录
2021/07/01 Vue.js