在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 相关文章推荐
才发现的超链接js导致网页中GIF动画停止的解决方法
Nov 02 Javascript
简明json介绍
Sep 28 Javascript
Javascript Math ceil()、floor()、round()三个函数的区别
Mar 09 Javascript
JS OffsetParent属性深入解析
Jan 13 Javascript
JavaScript函数获取事件源的小例子
May 14 Javascript
jQuery .tmpl() 用法示例介绍
Aug 21 Javascript
node.js require() 源码解读
Dec 13 Javascript
javascript中的后退和刷新实现方法
Nov 10 Javascript
微信小程序 传值取值的几种方法总结
Jan 16 Javascript
基于jQuery中ajax的相关方法汇总(必看篇)
Nov 08 jQuery
vue ssr+koa2构建服务端渲染的示例代码
Mar 23 Javascript
js实现金山打字通小游戏
Jul 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
PHP4之真OO
2006/10/09 PHP
php 不同编码下的字符串长度区分
2009/09/26 PHP
zend framework配置操作数据库实例分析
2012/12/06 PHP
PHP常用的缓存技术汇总
2014/05/05 PHP
PHP中使用imagick实现把PDF转成图片
2015/01/26 PHP
FleaPHP框架数据库查询条件($conditions)写法总结
2016/03/19 PHP
PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】
2019/11/04 PHP
用JS实现的一个include函数
2007/07/21 Javascript
Js 时间间隔计算的函数(间隔天数)
2011/11/15 Javascript
Firefox和IE兼容性问题及解决方法总结
2013/10/08 Javascript
setTimeout和setInterval的深入理解
2013/11/08 Javascript
javascript 闭包详解及简单实例应用
2016/12/31 Javascript
实例讲解vue源码架构
2019/01/24 Javascript
在vue中使用axios实现post方式获取二进制流下载文件(实例代码)
2019/12/16 Javascript
jQuery实现视频展示效果
2020/05/30 jQuery
JavaScript前端开发时数值运算的小技巧
2020/07/28 Javascript
vue中选中多个选项并且改变选中的样式的实例代码
2020/09/16 Javascript
python下如何让web元素的生成更简单的分析
2008/07/17 Python
Python实现中文数字转换为阿拉伯数字的方法示例
2017/05/26 Python
python测试mysql写入性能完整实例
2018/01/18 Python
Python爬虫之pandas基本安装与使用方法示例
2018/08/08 Python
python 接收处理外带的参数方法
2018/12/03 Python
Python命名空间的本质和加载顺序
2018/12/17 Python
python2.7使用plotly绘制本地散点图和折线图
2019/04/02 Python
详解python中的线程与线程池
2019/05/10 Python
Python 通过正则表达式快速获取电影的下载地址
2020/08/17 Python
Flesh Beauty官网:露华浓集团旗下彩妆品牌
2021/02/15 全球购物
垃圾回收的优点和原理。并考虑2种回收机制
2016/10/16 面试题
高中毕业生自我鉴定例文
2013/12/29 职场文书
优秀党支部书记事迹材料
2014/05/29 职场文书
竞选班干部演讲稿300字
2014/08/20 职场文书
群众路线查摆问题整改措施
2014/10/10 职场文书
2015年安全生产管理工作总结
2015/05/25 职场文书
《莫泊桑拜师》教学反思
2016/02/22 职场文书
GTX1650super好不好 gtx1650super显卡属于什么级别
2022/04/08 数码科技
java实现面板之间切换功能
2022/06/10 Java/Android