13

画像を暗号化し、復号化された画像をキャンバスに再描画できるプロジェクトに取り組んでいます。私はまだコーディングとプログラミングにかなり慣れていないので、現在、R、G、B、A 形式のピクセル配列である復号化された画像データを再描画する際に問題が発生しています。データを入れるだけでこれが可能になると思いました

ctx.putImageData(imgd,0,0);

しかし、firebug は、値が imagedata のインターフェースを実装していないことを教えてくれます。配列全体をここに投稿しました。画像は幅160px、高さ120pxです。

キャンバスに描画できるように配列を再フォーマットする方法はありますか?

4

2 に答える 2

15

Uint8 を使用すると、これをはるかに迅速に行うことができます。

var canvas = document.createElement("canvas"),
    ctx = canvas.getContext("2d"),
    img = [27,32,26,28, ... ];

// Get a pointer to the current location in the image.
var palette = ctx.getImageData(0,0,160,120); //x,y,w,h
// Wrap your array as a Uint8ClampedArray
palette.data.set(new Uint8ClampedArray(img)); // assuming values 0..255, RGBA, pre-mult.
// Repost the data.
ctx.putImageData(palette,0,0);

最初に値を変更する必要がない限り、バイト単位で処理する必要はありません。

于 2014-04-01T05:15:05.780 に答える