トップページ  > Canvas  > data

★Canvasリファレンス

imagedata . data …… RGBA順の一次配列データを返す
Internet Explorer9 Firefox2Firefox3Firefox4 Google Chrome1Google Chrome2Google Chrome3Google Chrome4Google Chrome5Google Chrome6 Safari3Safari4Safari5 Opera9Opera10

data属性は、RGBAの順で0~255の範囲の数値が一次配列となったデータを返します。 この配列データは、ImageDataオブジェクトの各ピクセルが保有している色と透明度を表します。

ImageDataオブジェクトの各ピクセルは、ImageDataオブジェクトの左上から右下に順番に並んでおり h×w×4つの整数 で表すことができます。 hはImageDataオブジェクトの上からの位置を表します。wは高さhにおける左からの位置を表します。 4つの整数はそれぞれ0~255の範囲の数値で、順番に赤(R)・緑(G)・青(B)・透明度(A)を表します。

■使用例

HTML + JavaScriptソース

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>canvasで図形を描く</title>
<script type="text/javascript">
<!--
function test() {
  //描画コンテキストの取得
  var canvas = document.getElementById('sample');
  if (canvas.getContext) {
    var context = canvas.getContext('2d');
    //寸法100×80のImageDataオブジェクトを生成
    var img01 = context.createImageData(100, 80);

    //ImageDataオブジェクトのRGBA値をテキストとして描画
    context.fillText(img01.data, 20, 20);
    context.fillText("R:"+img01.data[0], 20, 40);
    context.fillText("G:"+img01.data[1], 20, 60);
    context.fillText("B:"+img01.data[2], 20, 80);
    context.fillText("A:"+img01.data[3], 20, 100);
  }
}
//-->
</script>
</head>
<body onLoad="test()">
<h2>Canvasで図形を描く</h2>
<canvas width="300" height="150" id="sample" style="background-color:yellow;">
図形を表示するには、canvasタグをサポートしたブラウザが必要です。
</canvas>
</body>
</html>
↓↓↓

ブラウザ上の表示

Canvasで図形を描く

図形を表示するには、canvasタグをサポートしたブラウザが必要です。

以下は、W3Cのウェブサイトに掲載されているCanvasによる作成例です。 画像ファイルからエッジを検出して、元画像の上に検出されたエッジを重ねています。

■W3Cのウェブサイトに掲載されている使用例

HTML + JavaScriptソース

<!DOCTYPE HTML>
<html>
 <head>
  <title>エッジ検出デモ</title>
  <script>
   var image = new Image();
   function init() {
     image.onload = demo;
     image.src = "image.jpeg";
   }
   function demo() {
     var canvas = document.getElementsByTagName('canvas')[0];
     var context = canvas.getContext('2d');

     // canvas上にイメージを描画(後からこの画像の上にエッジ検出結果が重なります)
     context.drawImage(image, 0, 0);

     // 操作するイメージデータを取得
     var input = context.getImageData(0, 0, canvas.width, canvas.height);

     // データを入れるための空のImageDataオブジェクトを生成
     var output = context.createImageData(canvas.width, canvas.height);

     // 変数を定義
     // (ここで幅と高さに input.width と input.height を使用する点に注意
     // canvas.width と canvas.height を使用した場合と比べると
     // 高解像度のディスプレイで表示した際に違いが出るでしょう)
     var w = input.width, h = input.height;
     var inputData = input.data;
     var outputData = output.data;

     // エッジの検出
     for (var y = 1; y < h-1; y += 1) {
       for (var x = 1; x < w-1; x += 1) {
         for (var c = 0; c < 3; c += 1) {
           var i = (y*w + x)*4 + c;
           outputData[i] = 127 + -inputData[i - w*4 - 4] -   inputData[i - w*4] - inputData[i - w*4 + 4] +
                                 -inputData[i - 4]       + 8*inputData[i]       - inputData[i + 4] +
                                 -inputData[i + w*4 - 4] -   inputData[i + w*4] - inputData[i + w*4 + 4];
         }
         outputData[(y*w + x)*4 + 3] = 255; // alpha
       }
     }

     // 操作後にイメージを描画する
     context.putImageData(output, 0, 0);
   }
  </script>
 </head>
 <body onload="init()">
  <h3>元画像のimage.jpeg</h3>
  <p><img src="image.jpeg"></p>

  <h3>元画像の上にcanvasでエッジ検出した結果を重ねたもの</h3>
  <canvas width="400" height="300"></canvas>
 </body>
</html>
サンプルを別画面で開く

■関連項目

<canvas> …… 図形を描くHTML5から追加
▲ページ先頭へ
トップページ  > Canvas  > width
PR
MuuMuu Domain!
ドメイン取るならお名前.com
さくらのレンタルサーバ
ロリポップ!レンタルサーバー
HTMLクイックリファレンスについて
© HTMQ