在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的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )
Oct 10 Javascript
jquery实现更改表格行顺序示例
Apr 30 Javascript
javascript对中文按照拼音排序代码
Aug 20 Javascript
Bootstrap每天必学之按钮(一)
Nov 24 Javascript
jQuery常用知识点总结以及平时封装常用函数
Feb 23 Javascript
在JavaScript中调用Java类和接口的方法
Sep 07 Javascript
详解webpack+vue-cli项目打包技巧
Jun 17 Javascript
初学者AngularJS的环境搭建过程
Oct 27 Javascript
Vue.directive()的用法和实例详解
Mar 04 Javascript
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
Dec 05 jQuery
JS面向对象编程实现的拖拽功能案例详解
Mar 03 Javascript
vue+element-ui表格封装tag标签使用插槽
Jun 18 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
索尼ICF-SW100收音机评测
2021/03/02 无线电
PHP下用rmdir实现删除目录的三种方法小结
2008/04/20 PHP
wiki-shan写的php在线加密的解密程序
2008/09/07 PHP
2014年10个最佳的PHP图像操作库
2014/07/14 PHP
解析 thinkphp 框架中的部分方法
2017/05/07 PHP
PHP耦合设计模式实例分析
2018/08/08 PHP
javascript 对象比较实现代码
2009/04/27 Javascript
高效的表格行背景隔行变色及选定高亮的JS代码
2010/12/04 Javascript
如何用JavaScript动态呼叫函数(两种方式)
2013/05/03 Javascript
利用jquery.qrcode在页面上生成二维码且支持中文
2014/02/12 Javascript
JavaScript indexOf方法入门实例(计算指定字符在字符串中首次出现的位置)
2014/10/17 Javascript
jQuery中hasClass()方法用法实例
2015/01/06 Javascript
jQuery实现返回顶部效果的方法
2015/05/29 Javascript
用canvas 实现个图片三角化(LOW POLY)效果
2016/02/18 Javascript
利用jquery禁止外层滚动条的滚动
2017/01/05 Javascript
微信小程序中时间戳和日期的相互转换问题
2018/07/09 Javascript
vue 本地环境跨域请求proxyTable的方法
2018/09/19 Javascript
Vue中的验证登录状态的实现方法
2019/03/09 Javascript
一文读懂vue动态属性数据绑定(v-bind指令)
2020/07/20 Javascript
详解vue3.0 的 Composition API 的一种使用方法
2020/10/26 Javascript
[02:16]卖萌的僵尸 DOTA2神话信使飞僵小宝来袭
2014/03/24 DOTA
[32:56]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.11
2020/12/16 DOTA
解读python如何实现决策树算法
2018/10/11 Python
从运行效率与开发效率比较Python和C++
2018/12/14 Python
pandas实现将dataframe满足某一条件的值选出
2019/06/12 Python
Python迷宫生成和迷宫破解算法实例
2019/12/24 Python
Anaconda详细安装步骤图文教程
2020/11/12 Python
python 批量将中文名转换为拼音
2021/02/07 Python
英国领先的独立酒精饮料零售商:DrinkSupermarket
2021/01/13 全球购物
传播学专业毕业生自荐信
2013/11/04 职场文书
缓刑期间思想汇报范文
2014/10/10 职场文书
党建工作整改措施
2014/10/28 职场文书
公务员年度考核登记表个人总结
2015/02/12 职场文书
借条格式范本
2015/05/25 职场文书
Java十分钟精通进阶适配器模式
2022/04/06 Java/Android
Python pyecharts案例超市4年数据可视化分析
2022/08/14 Python