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は.pngとして保存されfoo.pngます。

PNG を出力する最終ステップの内部はrender -id 1 -o、基本的に次のようになります。

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

保存した一時ファイルを読み込んで出力します。

残念ながら、一時ファイルの名前を返してからpngを再度ロードすることはできませ

更新コマンドのバッファサイズが問題の原因ではないかと疑ったexecため、maxBuffer を 10mb 程度に1024*10240増やしました。画像は 2 ~ 3 MB を超えないようにしてください。しかし、それは役に立ちませんでした。

4

0 に答える 0