MENU

JS/jQueryでCanvasを使って画像の画素Pixelへアクセスし画素値を取得する

ちょっとJavascriptで画像処理をしてみたくなったので、手始めに画素値へのアクセスの仕方を紹介します。

画素値を取得


// 読み込む画像ファイルを指定
var img    = $(''),
    canvas = $('<canvas/>');

img.on('load', function()
{
  var rows = img[0].height,  // 行数
      cols = img[0].width;   // 列数
  
  // Canvasに横幅と縦幅を設定
  canvas.attr(
  {
    'width' : cols,
    'height': rows
  });
  
  // Canvas上に画像を描画
  canvas[0].getContext('2d').drawImage(img[0], 0, 0, cols, rows);
  
  // 各画素にアクセス
  for (var i = 0; i < rows; ++i)
  {
    for (var j = 0; j < cols; ++j)
    {
      var pixel = canvas[0].getContext('2d').getImageData(i, j, 1, 1).data;
      console.log('座標(' + i + ',' + j + ') R:' + pixel[0] + ' G:' + pixel[1] + ' B:' + pixel[2] + ' α:' + pixel[3]);
    }
  }
});

画素値は img タグから直接取得できないので、canvas 要素を利用します。