在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 写类方式之一
Jul 05 Javascript
点击下载链接 弹出页面实现代码
Oct 01 Javascript
jQuery 选择器项目实例分析及实现代码
Dec 28 Javascript
JavaScript中创建对象和继承示例解读
Feb 12 Javascript
JavaScript动态提示输入框输入字数的方法
Jul 27 Javascript
BootStrap创建响应式导航条实例代码
May 31 Javascript
axios学习教程全攻略
Mar 26 Javascript
微信JS-SDK选取手机照片上传功能
Apr 21 Javascript
js禁止Backspace键使浏览器后退的实现方法
Sep 01 Javascript
Vue项目部署在Spring Boot出现页面空白问题的解决方案
Nov 26 Javascript
vue实现搜索过滤效果
May 28 Javascript
微信小程序调用天气接口并且渲染在页面过程详解
Jun 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
用Apache反向代理设置对外的WWW和文件服务器
2006/10/09 PHP
PHP的面试题集,附我的答案和分析(一)
2006/11/19 PHP
基于php-fpm 参数的深入理解
2013/06/03 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
2013/06/20 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
2018/06/16 PHP
layui数据表格自定义每页条数limit设置
2019/10/26 PHP
基于jquery的模态div层弹出效果
2010/08/21 Javascript
javascript与webservice的通信实现代码
2010/12/25 Javascript
基于JQuery的日期联动实现代码
2011/02/24 Javascript
JQuery 自定义CircleAnimation,Animate方法学习笔记
2011/07/10 Javascript
js中escape对应的C#解码函数 UrlDecode
2012/12/16 Javascript
javascript 实现简单的table排序及table操作练习
2012/12/28 Javascript
在jQuery中 关于json空对象筛选替换
2013/04/15 Javascript
修改file按钮的默认样式实现代码
2013/04/23 Javascript
js实现连续英文字符自动换行兼容ie6 ie7和firefox
2013/09/06 Javascript
jQuery的显示和隐藏方法与css隐藏的样式对比
2013/10/18 Javascript
JS关闭窗口或JS关闭页面的几种代码分享
2013/10/25 Javascript
浅析JavaScript中的隐式类型转换
2013/12/05 Javascript
jQuery中dequeue()方法用法实例
2014/12/29 Javascript
基于JavaScript实现动态添加删除表格的行
2016/02/01 Javascript
一款简单的jQuery图片标注效果附源码下载
2016/03/22 Javascript
Vue 去除路径中的#号
2018/04/19 Javascript
基于JavaScript canvas绘制贝塞尔曲线
2018/12/25 Javascript
微信小程序云开发如何使用npm安装依赖
2019/05/18 Javascript
jQuery实现B2B网站后台管理系统侧导航
2020/07/08 jQuery
解决vue侦听器watch,调用this时出现undefined的问题
2020/10/30 Javascript
python基础_文件操作实现全文或单行替换的方法
2017/09/04 Python
Python文本特征抽取与向量化算法学习
2017/12/22 Python
对Python的交互模式和直接运行.py文件的区别详解
2019/06/29 Python
Tensorflow读取并输出已保存模型的权重数值方式
2020/01/04 Python
pytorch 中pad函数toch.nn.functional.pad()的用法
2020/01/08 Python
tensorflow使用freeze_graph.py将ckpt转为pb文件的方法
2020/04/22 Python
石油工程专业毕业生求职信
2014/04/13 职场文书
六五普法宣传标语
2014/10/06 职场文书
列车乘务员工作不细心检讨书
2014/10/07 职场文书