gpt4 book ai didi

node.js - 使用 Sharp 将 png 叠加到 SVG 上?

转载 作者:太空宇宙 更新时间:2023-11-03 23:21:10 24 4
gpt4 key购买 nike

我有一组 png 文件,尺寸为 4500x5400。

我想做的是:

  1. 以 300dpi 绘制一个 485x485 的圆
  2. 将 png 覆盖在圆圈内,以便调整其大小(缩放)

我整晚都在胡闹,但还没有走多远:

我已经获得了我的圈子的代码:

  '<svg height="485" width="485"><circle cx="242.5" cy="242.5" r="242.5" fill="#3a4458"/></svg>'

然后是一些调整大小的代码,调整我的 png 的大小,并屏蔽它。

sharp(`${toConvert}/${file}`)
.trim()
.resize(485, 485)
.embed()
.overlayWith('overlay.png', { cutout: true } )
.toFile(`./converted/${file}-pop.png`)
.catch(err => {
console.log(err)
})

有谁知道如何将两者结合起来,这样我就可以得到一个带有我的png的彩色圆圈?

仅供引用,Sharp 是一个图像处理库:https://github.com/lovell/sharp

最佳答案

这是来 self 的项目,有一个圆形封面,

首先在SVG.js的帮助下创建一个圆形SVG您可以使用背景属性来获取彩色圆圈。

const window = require('svgdom');


const SVG = require('svg.js')(window);

const document = window.document;


const ShapeUtil = {

drawCircle: function (width, height) {
return new Promise(function (resolve, reject) {
var circleDraw = SVG(document.documentElement).size(width, height);

circleDraw.clear();
circleDraw.viewbox(0, 0, width, height);
circleDraw.circle(width).cx(Math.abs(width / 2)).cy(Math.abs(width / 2));
resolve(circleDraw.svg());
});

}

};

然后使用 Sharp.io 将创建的 SVG dom 覆盖到裁剪后的图像:

 ShapeUtil.drawCircle( width,  height)
.then(function (resultSVG) {
sharp(croppedImage)
.overlayWith(new Buffer(resultSVG), {cutout: true})
.png().toBuffer();
}

关于node.js - 使用 Sharp 将 png 叠加到 SVG 上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49712421/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com