すべてのピクセルが赤である 100*100 ピクセルの ImageData オブジェクトを作成し、キャンバスにそれを配置します:
JavaScript:
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
var imgData=ctx.createImageData(100,100);
for (var i=0;i<imgData.data.length;i+=4)
{
imgData.data[i+0]=255;
imgData.data[i+1]=0;
imgData.data[i+2]=0;
imgData.data[i+3]=255;
}
ctx.putImageData(imgData,10,10);
Try it Yourself ❯
表中の数字は、メソッドを完全にサポートした最初のブラウザ・バージョンを指定しています。
メソッド | |||||
---|---|---|---|---|---|
createImageData() | Yes | 9.0 | Yes | Yes | Yes |
createImageData() メソッドは、新しい空の ImageData オブジェクトを作成します。 新しいオブジェクトのピクセル値は、デフォルトで透明な黒です。
ImageData オブジェクト内のすべてのピクセルには、4 つ情報(RGBA 値)があります:
R - 赤 (0 ~ 255)
G - 緑 (0 ~ 255)
B - 青 (0 ~ 255)
A - αチェンネル (0 ~ 255;0 は透明で、255 は完全不透明)
以上から、(0,0,0,0) は透明な黒を示します。
色/アルファ情報は配列に格納され、配列にはピクセル毎に 4 個の情報が含まれているので、 配列のサイズは ImageData オブジェクトの 4 倍の大きさになります:width*height*4。 (配列のサイズを知るための簡単な方法は、ImageDataObject.data.length を使用することです)
色/アルファ情報を含む配列は、ImageData オブジェクトの data プロパティに格納されています。
チップ: 配列の色/アルファ情報を操作した後で、putImageData() メソッドでキャンバスを戻した (操作する前の配列に戻した)画像データをコピーすることができます。
例:
ImageData オブジェクトの最初のピクセルを赤にするための構文:
imgData=ctx.createImageData(100,100);
imgData.data[0]=255;
imgData.data[1]=0;
imgData.data[2]=0;
imgData.data[3]=255;
ImageData オブジェクトの最初のピクセルを緑にするための構文:
imgData=ctx.createImageData(100,100);
imgData.data[4]=0;
imgData.data[5]=255;
imgData.data[6]=0;
imgData.data[7]=255;
createImageData() メソッドの 2 つのバージョンがあります:
1. これは、指定の大きさ(ピクセル指定)を持つ新しい ImageData オブジェクトを作成します:
JavaScript 構文: | var imgData=context.createImageData(width,height); |
---|
2. これは、anotherImageData によって指定されたオブジェクトと同じ大きさの新しい ImageData オブジェクトを作成します (これは、画像データのコピーではありません):
JavaScript 構文: | var imgData=context.createImageData(imageData); |
---|
パラメータ | 説明 |
---|---|
width | 新しい ImageData オブジェクトの幅(ピクセル単位) |
height | 新しい ImageData オブジェクトの高さ(ピクセル単位) |
imageData | anotherImageData オブジェクト |