0

我需要将从 cli 脚本生成的图像加载到画布中。

let { exec } = require('child_process');
let { Image } = require('canvas');

let image = new Image();

image.onload = function() {
    console.log('Success');
}

image.onerror = function(err) {
    console.error(err);
}

exec("render -id 1 -o", {maxBuffer:1024*10240}, (err, stdout, stderr) => {

    if (err) {
        console.error(err);
        return;
    }


    // Not working
    //image.src = new Buffer(new Uint8Array(stdout));

    // Not working either
    //image.src = Buffer.from(stdout);
});

如果我在我的控制台运行$ render -id 1 -o > foo.png它就像一个魅力,png 保存为foo.png.

在输出PNG的最后步骤里面render -id 1 -o基本上看起来有点像这样。

process.stdout.write(fs.readFileSync(files[0].tempName));

它读取保存的临时文件并输出。

不幸的是,我不能返回临时文件的名称,然后再次加载 png。

更新我怀疑exec命令的缓冲区大小导致了这个问题,所以我将 maxBuffer 提高到1024*10240应该是 10mb 左右。图像不应大于 2-3mb。但这没有帮助。

4

0 回答 0