使用 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});

尝试降低质量并查看它是否符合您的尺寸规格。