首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在nodejs中使用promises将多个svg字符串流式传输到png

在Node.js中使用Promises将多个SVG字符串流式传输到PNG可以通过以下步骤实现:

  1. 首先,确保你已经安装了Node.js和相关的依赖库。
  2. 创建一个Node.js脚本文件,比如convert.js
  3. 在脚本文件中,引入所需的模块和库:
代码语言:javascript
复制
const fs = require('fs');
const util = require('util');
const sharp = require('sharp');
const { createCanvas, registerFont } = require('canvas');
const { SVGtoPDF } = require('svg-to-pdfkit');
const { PDFDocument } = require('pdf-lib');
const { SVGPathData } = require('svg-pathdata');
const { DOMParser } = require('xmldom');
const { SVG } = require('@svgdotjs/svg.js');
const { convert } = require('convert-svg-to-png');
  1. 创建一个函数来处理SVG字符串并将其转换为PNG:
代码语言:javascript
复制
async function convertSVGtoPNG(svgString) {
  // 使用svgdotjs库将SVG字符串转换为SVG对象
  const svg = SVG().svg(svgString);

  // 创建一个Canvas对象
  const canvas = createCanvas(svg.width(), svg.height());
  const ctx = canvas.getContext('2d');

  // 渲染SVG到Canvas上
  const render = new DOMParser().parseFromString(svg.svg(), 'image/svg+xml');
  await sharp(Buffer.from(render.documentElement.outerHTML))
    .png()
    .toBuffer()
    .then((buffer) => {
      const img = new Image();
      img.src = buffer;
      ctx.drawImage(img, 0, 0);
    });

  // 将Canvas转换为PNG
  const pngBuffer = await util.promisify(canvas.toBuffer.bind(canvas))();

  return pngBuffer;
}
  1. 创建一个函数来处理多个SVG字符串并将它们流式传输到PNG:
代码语言:javascript
复制
async function convertMultipleSVGtoPNG(svgStrings) {
  const promises = svgStrings.map((svgString) => convertSVGtoPNG(svgString));
  const pngBuffers = await Promise.all(promises);

  return pngBuffers;
}
  1. 在脚本文件中调用convertMultipleSVGtoPNG函数并处理结果:
代码语言:javascript
复制
const svgStrings = [
  '<svg>...</svg>',
  '<svg>...</svg>',
  '<svg>...</svg>',
  // 添加更多的SVG字符串
];

convertMultipleSVGtoPNG(svgStrings)
  .then((pngBuffers) => {
    // 处理PNG缓冲区
    pngBuffers.forEach((pngBuffer, index) => {
      fs.writeFileSync(`output${index}.png`, pngBuffer);
    });
    console.log('转换完成!');
  })
  .catch((error) => {
    console.error('转换出错:', error);
  });

这样,你就可以使用Promises将多个SVG字符串流式传输到PNG了。请注意,上述代码中的依赖库和模块只是示例,你可以根据自己的需求选择适合的库和模块。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • psd.js

    一个用Coffeescript编写的通用PSD解析器。它基于PSD.rb,可以让用户以可管理的树形结构处理Photoshop文档,并找出重要的数据,例如文档结构、文档大小、图层/文件夹大小和定位、图层/文件夹名称、图层/文件夹可见性和不透明度、字体数据(通过psd-enginedata)、文本区域内容、字体名称、大小和颜色、颜色模式和位深度、矢量掩模数据、扁平化图像数据和图层组合。它可以在NodeJS和浏览器(使用browserify)中运行。目前还有一些缺失的功能,例如图层组合过滤、内置渲染器和许多图层信息块,但最终目标是与PSD.rb具有完全的功能平衡。其中使用的技术术语包括Coffeescript、PSD、NodeJS、浏览器ify和图层组合。

    01

    在 ASP.NET Core 中使用 AI 驱动的授权策略限制站点访问

    ASP.NET Core 引入声明授权机制,该机制接受自定义策略来限制对应用程序或部分应用程序的访问,具体取决于经过身份验证的用户的特定授权属性。在上一篇文章中,即于 2019 年 6 月发行的 MSDN 杂志中的《ASP.NET Core 中支持 AI 的生物识别安全》(msdn.com/magazine/mt833460),我提出了一个基于策略的模型,用于将授权逻辑与基础用户角色分离,并展示了在检测到未经授权的入侵时,如何专门使用此类授权策略限制对建筑的物理访问。在第二篇文章中,我将重点讨论安全摄像头的连接性、将数据流式传输到 Azure IoT 中心、触发授权流,并使用内置在 Azure 机器学习中的异常检测服务评估潜在入侵的严重性。

    02
    领券