在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 1.42 checkbox 全选和反选代码
Mar 27 Javascript
bootstrap data与jquery .data
Jul 07 Javascript
JavaScript学习笔记整理之引用类型
Jan 22 Javascript
canvas实现手机端用来上传用户头像的代码
Oct 20 Javascript
PHP捕捉异常中断的方法
Oct 24 Javascript
angular+ionic 的app上拉加载更新数据实现方法
Jan 16 Javascript
js 调用百度分享功能
Feb 27 Javascript
ECMAScript6 新特性范例大全
Mar 24 Javascript
基于JavaScript实现验证码功能
Apr 01 Javascript
React Navigation 使用中遇到的问题小结
May 08 Javascript
JS实现简易留言板(节点操作)
Mar 16 Javascript
vue 动态给每个页面添加title、关键词和描述的方法
Aug 28 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实现的购物车类实例
2015/06/17 PHP
jquery each()源代码
2011/02/14 Javascript
新鲜出炉的js tips提示效果
2011/04/03 Javascript
为原生js Array增加each方法
2012/04/07 Javascript
基于mootools插件实现遮罩层新手引导
2012/05/24 Javascript
jQuery图片播放8款精美插件分享
2013/02/17 Javascript
引入autocomplete组件时JS报未结束字符串常量错误
2014/03/19 Javascript
使用jQuery中的when实现多个AJAX请求对应单个回调的例子分享
2014/04/23 Javascript
extjs每个组件要设置唯一的ID否则会出错
2014/06/15 Javascript
jquery中map函数遍历数组用法实例
2015/05/18 Javascript
在Mac OS下使用Node.js的简单教程
2015/06/24 Javascript
js倒计时简单实现方法
2015/12/17 Javascript
ECharts仪表盘实例代码(附源码下载)
2016/02/18 Javascript
javascript的正则匹配方法学习
2016/02/24 Javascript
Listloading.js移动端上拉下拉刷新组件
2016/08/04 Javascript
jQuery模拟Marquee实现无缝滚动效果完整实例
2016/09/29 Javascript
Angular-Touch库用法示例
2016/12/22 Javascript
原生js实现对Ajax的封装(仿jquery)
2017/01/22 Javascript
jQuery常见面试题之DOM操作详析
2017/07/05 jQuery
Angular4开发解决跨域问题详解
2017/08/28 Javascript
windows下更新npm和node的方法
2017/11/30 Javascript
Parcel.js + Vue 2.x 极速零配置打包体验教程
2017/12/24 Javascript
Vue搭建后台系统需要注意的问题
2019/11/08 Javascript
[01:08:33]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
2015/03/19 Python
PyQt5每天必学之进度条效果
2018/04/19 Python
python3中for循环踩过的坑记录
2020/12/14 Python
如何转换一个字符串到enum值
2014/04/12 面试题
外贸英语毕业生自荐信
2013/11/14 职场文书
大学生的应聘自我评价
2013/12/13 职场文书
学生会主席竞聘书
2014/03/31 职场文书
2015年护士医德医风自我评价
2015/03/03 职场文书
致运动员的广播稿
2015/08/19 职场文书
用Python远程登陆服务器的步骤
2021/04/16 Python
Django中的JWT身份验证的实现
2021/05/07 Python
python 使用tkinter与messagebox写界面和弹窗
2022/03/20 Python