Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >在 Node.js 中转换 SVG 图像格式[每日前端夜话0xAD]

在 Node.js 中转换 SVG 图像格式[每日前端夜话0xAD]

作者头像
疯狂的技术宅
发布于 2019-08-23 06:24:56
发布于 2019-08-23 06:24:56
5.6K00
代码可运行
举报
文章被收录于专栏:京程一灯京程一灯
运行总次数:0
代码可运行

介绍

你需要将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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ npm install sharp --save

Yarn

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ yarn add sharp

现在我们已经准备好开始编写一些代码并转换图像了!

SVG 转 PNG

对于第一个例子,我们将 SVG文 件转换为可移植网络图形(PNG)文件格式。确保你在项目目录的根目录中有一个可用的 SVG 文件。

这是完整的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 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() 所有错误。

当你运行代码时,应该得到类似的输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    format: 'png',
    width: 2500,
    height: 527,
    channels: 4,
    premultiplied: false,
    size: 47194
}

你应该能够在项目目录中看到新的 PNG 文件。

还可以将其他选项传递给 .png() 方法来更改输出图像。这些包括压缩级别、质量、颜色等。你可以在文档中查看它们。

SVG 转 JPEG

现在,让我们将 SVG 文件转换为 JPEG 格式。确保项目目录的根目录中有一个 SVG 文件可供使用。

这是完整的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const sharp = require("sharp")
sharp("file.svg")
    .png()
    .toFile("new-file.jpg")
    .then(function(info) {
        console.log(info)
    })
    .catch(function(err) {
        console.log(err)
    })

当运行代码时,你应该得到类似的输出:

json { 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文件。

这是完整的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const sharp = require("sharp")

sharp("file.svg")
  .tiff()
  .toFile("new-file.tiff")
  .then(function(info) {
    console.log(info)
  })
  .catch(function(err) {
    console.log(err)
  })

当你运行代码时,应该得到类似的输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    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文件。

这是完整的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const sharp = require("sharp")

sharp("file.svg")
  .webp()
  .toFile("new-file.webp")
  .then(function(info) {
    console.log(info)
  })
  .catch(function(err) {
    console.log(err)
  })

输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  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文件。

这是完整的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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。

结论

希望本文能帮助你完成编码工作!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端先锋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
图片处理不用愁,给你十个小帮手
本文阿宝哥会为小伙伴们隆重介绍用于图片处理的十个 “小帮手”,他们各个身怀绝技,拥有模糊、压缩、裁剪、旋转、合成、比对等技能。相信认识他们之后,你将能够轻松应对大多数的图片处理场景。
阿宝哥
2020/06/23
5.2K0
Node.js 小打小闹之图片合成
前阵子公司的产品经理找我谈个需求,希望能为每个用户生成专属的资讯分享图片及让开通专栏的用户能够生成专属的文章分享图片。这两天刚好有空,就抽空预研了 “生成专属的资讯分享图片” 这个功能。
阿宝哥
2019/11/06
5K1
Node.js 小打小闹之图片合成
用 Node.js 实现定时任务[每日前端夜话0xFE]
在本文中,我们将研究如何在 Node 程序中创建和使用 Cron 作业。为此我们将创建一个简单的程序,该应用程序会自动从服务器中删除自动生成的 error.log 文件。Cron 作业的另一个优点是,你可以安排程序以不同的时间间隔执行不同的脚本。
疯狂的技术宅
2019/12/23
5.8K0
用 Node.js 实现定时任务[每日前端夜话0xFE]
Node.js 极简笔记
之前代码require(‘fs’)就是引用的内置模块。Node为JS提供了很多服务器级别的API,这些API绝大多数都被包装到了一个有名字的核心模块。例如文件操作的fs模块。
张哥编程
2024/12/19
1660
一文学会 Node.js 中的流[每日前端夜话0xF4]
用 Dominic Tarr 的话来说:“流是 Node 中最好的,也是最容易被误解的想法。”即使是 Redux 的创建者和 React.js 的核心团队成员 Dan Abramov 也害怕 Node 流。
疯狂的技术宅
2019/12/11
2.4K0
30分钟用Node.js构建一个API服务器[每日前端夜话0x70]
Node.js 对初学者来说可能是令人望而却步的,其灵活的结构和缺乏严格的规范使它看起来很复杂。
疯狂的技术宅
2019/05/21
2.2K0
Node.js 中的ES模块现状[每日前端夜话0x8D]
新的 ECMAScript(ES)模块与以前的语言版本不完全兼容,因此使用的 JavaScript 引擎需要知道每一个文件是“旧” JavaScript 代码还是“新”模块。
疯狂的技术宅
2019/07/10
1.4K0
Node.js 中的ES模块现状[每日前端夜话0x8D]
深入解析 Node.js 的 console.log[每日前端夜话0x73]
当你开始用 JavaScript 进行开发时,可能学到的第一件事就是如何用 console.log 将内容记录到控制台。如果你去搜索如何调试 JavaScript,会发现数百篇博文和 StackOverflow 文章都会简单的告诉你用 console.log。因为这是一种很常见的做法,我们甚至会在代码中使用像 no-console 这样的 linter 规则来确保不会留下意外的日志信息。但是如果我们真的想要去记录某些内容呢?
疯狂的技术宅
2019/05/29
2K0
用Node.js把HTML转成PDF格式[每日前端夜话0x46]
在本文中,我将展示如何使用 Node.js、Puppeteer、headless Chrome 和 Docker 从样式复杂的 React 页面生成 PDF 文档。
疯狂的技术宅
2019/04/23
6.8K0
Node.js笔记
用户把 JSON 数据 POST 给服务器,服务器再把数据中的 msg 取出来,返回给用户
赤蓝紫
2023/01/02
4.8K0
Node.js笔记
用 Mongoose 插件记录Node.js API日志[每日前端夜话0xBD]
现在已经有了 npm 的日志记录模块。这些模块可以将日志存储在不同格式或级别的文件中。我们将使用流行的ORM Mongoose 讨论 Node.js Express 程序中的 API 日志记录。
疯狂的技术宅
2019/09/12
3K0
用 Mongoose 插件记录Node.js API日志[每日前端夜话0xBD]
使用Node.js、pm2和ssh2模块实现一个简单的Node.js项目部署脚本
本文将介绍如何使用Node.js和ssh2模块实现一个简单的部署脚本,将本地的项目文件上传到远程服务器上。我们将使用dotenv模块来管理环境变量,以及child_process模块来执行命令行操作。
泯泷、
2024/03/11
6320
关于使用 Node.js 来辅助进行 CI/CD 的一些想法
  由于使用到的 CI/CD 工具可能会更换,对应的学习成本也相应增加,但是 Node.js 其实可以帮助我们实现这些工具的大部分功能,包括操作文件、执行 cmd 等等。   所以我们如果把大部分的打包或集成操作使用 Node.js 去实现,那么无论工具如何更换,我们只需学习如何使用该工具执行 npm 即可,从而大大降低迁移与学习成本。   当然这只是我最近迁移时的一些解决方案与想法,如果有大佬指教一些其他的方式,那自然是更好啦哈哈哈~
老猫-Leo
2023/12/11
3290
Node.js快速入门
下载最新版源码:https://nodejs.org/dist/v6.9.5/node-v6.9.5.tar.gz
程裕强
2022/05/06
11.5K0
用Python转换图像格式,超全!
最近我遇到了Python转换图像格式问题,正好干脆总结了一波,将一些奇怪的图片格式(webp格式、jfif格式、svg格式)转换为常见的jpg、png图片格式。
快学Python
2022/11/28
2.1K0
用Python转换图像格式,超全!
Node.js 基础入门
Node.js 是一个基于 Chrome V8 引擎 的 JavaScript 运行时环境
王秀龙
2021/08/23
1.5K0
Node.js 基础入门
一篇文章构建你的 Node.js 知识体系
最近读《重学前端》,开篇就是让你拥有自己的知识体系图谱,后续学的东西补充到相应的模块,既可以加深对原有知识的理解,又可以强化记忆,很不错的学习方案。
五月君
2020/08/28
1.9K0
一篇文章构建你的 Node.js 知识体系
# 浏览器截图方案分析
html2canvasopen in new window 用的比较广泛的前端截图方案,先将 DOM 一个个 转为 Canvas 然后导出图片(使用 canvas 自带的 toDataUrl、toBobl)即可。使用起来应该是兼容性比较好的方案了,能解决大部分的需求,但是也有一写小问题,如:
九旬
2023/10/19
4270
Node.js爬虫之使用puppeteer爬取百度图片
本文通过puppeteer实现对百度图片的抓取,这里简单介绍下puppeteer puppeteer可以使我们编写一套代码控制浏览器动作,“你可以在浏览器中手动执行的绝大多数操作都可以使用 Puppeteer 来完成” 因此Puppeteer常用于测试和爬虫---官方文档
切图仔
2022/09/14
1.5K0
Node.js爬虫之使用puppeteer爬取百度图片
【快速复习】Node.js中的fs模块的使用
JavaScript 的是没有操作文件的能力,但是 Node 是可以做到的,Node 提供了操作文件系统模块,是 Node 中使用非常重要和高频的模块,是绝对要掌握的一个模块系统。
张张
2020/03/06
1.4K0
【快速复习】Node.js中的fs模块的使用
相关推荐
图片处理不用愁,给你十个小帮手
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验