使用 FabricJs 对象在 Nodejs 中渲染图像时如何减小最终图像大小?
How can I reduce the final image size when rendering image in Nodejs using FabricJs object?
有什么方法可以减小最终图像的大小吗?
目前图片大小在250-350kb左右。
我打算把它带到 50-100 kb 左右。
可以吗?
我在 Nodejs 中的代码
app.get('/loadImage', async function(req, res) {
res.writeHead(200, { 'Content-Type': 'image/png' });
let newObj = req.body.fabricObject
var canvas = new fabric.StaticCanvas(null, { width: 600, height: 400 });
canvas.loadFromJSON(newObj, function() {
canvas.renderAll();
var stream = canvas.createPNGStream();
stream.on('data', function(chunk) {
res.write(chunk);
});
stream.on('end', function() {
res.end();
});
});
});
PNG 使用无损压缩,因此它将始终保持其大小,除非您调整它的大小。对于相同的分辨率,您可以使用使用有损压缩的 JPEG,您可以指定它的 quality
参数,这会影响大小。
res.writeHead(200, { 'Content-Type': 'image/jpeg' });
var stream = canvas.createJPEGStream({quality: 100});
尝试降低质量并查看它是否符合您的尺寸规格。
有什么方法可以减小最终图像的大小吗?
目前图片大小在250-350kb左右。
我打算把它带到 50-100 kb 左右。
可以吗?
我在 Nodejs 中的代码
app.get('/loadImage', async function(req, res) {
res.writeHead(200, { 'Content-Type': 'image/png' });
let newObj = req.body.fabricObject
var canvas = new fabric.StaticCanvas(null, { width: 600, height: 400 });
canvas.loadFromJSON(newObj, function() {
canvas.renderAll();
var stream = canvas.createPNGStream();
stream.on('data', function(chunk) {
res.write(chunk);
});
stream.on('end', function() {
res.end();
});
});
});
PNG 使用无损压缩,因此它将始终保持其大小,除非您调整它的大小。对于相同的分辨率,您可以使用使用有损压缩的 JPEG,您可以指定它的 quality
参数,这会影响大小。
res.writeHead(200, { 'Content-Type': 'image/jpeg' });
var stream = canvas.createJPEGStream({quality: 100});
尝试降低质量并查看它是否符合您的尺寸规格。