このように、キャンバスストリームの書き込みの完了をキャッチしようとします:
var out = fs.createWriteStream(out_fs);
var stream = canvas.createPNGStream({
bufsize: 2048
});
stream.on('end', function () {
// can we use out_fs now? why not?
});
stream.pipe(out);
しかしout_fs
、サブ関数を読み込もうとすると
エラー: 指定された画像の読み込みが完了していません
この行で:
fs.readFile(out_fs, function (err, data) {
if (err) throw err;
var img = new Canvas.Image; // Create a new Image
img.src = data;
ctx2.drawImage(img, 0, 50, img.width, img.height); <--
http://nodejs.org/api/stream.html#stream_event_end
しかし、ストリームが書き込まれた後に制御フローを続行する方法は他にありません。親関数全体を返すと、ファイルは読み取り可能に見えます。子関数を でラップしようとしましたsetImmediate()
が、断続的にしか機能しないようです。
ストリームの書き込みの最終的な使用可能な最終結果をキャッチする決定的な方法は何ですか?
node-canvas のドキュメントでは、イベントがファイルの最終的な書き込みを通知すると主張してend
います: https://www.npmjs.com/package/canvas#canvaspngstream
ただし、すぐに使用しようとすると、上記のエラーが発生します。
`finish' はまったく実装されていないようです。