動的に生成された画像を必要とする meteor.js を使用してアプリを構築しています。動的に生成された小さな画像がたくさんあります。ピクセルごとに生成すると、合計で 1 秒あたり最大 25000 ピクセルの画像が必要になります。これはかなりの計算負荷であることを認識したので、Meteor のサーバー メソッドを使用してプロセスを高速化することにしました。
今のところ、これが私の機能的な試みです:
ピクセル配列のサーバー側生成
loadImage = function(){
this.imagePixels = new Uint8Array(4*DIM*DIM);
for(var i = 0; i < DIM; i++){
for(var j = 0; j < DIM; j++){
var x = 255*i/DIM;
var y = 255*j/DIM;
this.setPixel(this.imagePixels,
i, j, eval(this.redEQ)
, eval(this.greenEQ)
, eval(this.blueEQ)
, 255);
}
}
}
その後、いくつかの中間処理が発生し (コードは示されていません)、データがクライアントに送り返され、次のように uint8array.set を介して「画像」がキャンバスに配置されます。
var elem = document.getElementById(this.canvasID);
var ctx = elem.getContext('2d');
var imageData = ctx.getImageData(0, 0, DIM, DIM);
var data = imageData.data;
data.set(this.evo.pixels);
ctx.putImageData(imageData, 0, 0);
これはすべて問題なくダンディです... 私にはスピードが必要です。そうは言っても、ここに私の質問があります:
HTMLキャンバスに効率的に配置できるnode.js内にJSONシリアル化可能な画像を作成することは可能ですか?