Home > Blog > canvas要素で任意の座標の色を取得する

canvas要素で任意の座標の色を取得する

既出かもですがさっき気づいたので衝動的にエントリ。

今、canvas要素を使ってお絵かきツールを作ろうと奮闘中なんですが、やっぱりお絵かきするならスポイドツールが欲しい。でもcanvas上の色情報を取得するメソッドなんてないし…と思ってたら、ありました。

getImageData()メソッドです。

具体的な説明はこちら。まあ何をするかというと、このメソッドが返すImageDataオブジェクトの、data属性を直接読みに行っちゃうわけですね。つまりこんな感じ。

var imageData = ctx.getImageData(0, 0, 1, 1);
var red, green, blue, alpha;
red = imageData.data[0]; // 赤
green = imageData.data[1]; // 緑
blue = imageData.data[2]; // 青
alpha = imageData.data[3]; // アルファ値

getImageData()の引数をマウスのクリック座標とかにすれば、スポイドツールの完成です。

ちなみにPhotoShopとかSAIみたいに、実際に画面に表示されている色(アルファブレンド済みの色)を計算する方法はGoogleで検索すると色々出てきますが、分かりやすかったのはこのページ。

あ、ちなみにこれ、メソッドの実装状況の都合でFirefoxとOpera9.5でしか動きません。まあ私が作ってるツールは、IEもSafariも画像出力できないんでそもそも捨ててるってことで問題ないんですが。もうちょっといろんなブラウザが対応してくれたらいいんですけどねえ…現状だと完全に自己満足です。

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://blog.comikura.net/blog/081024/trackback/
Listed below are links to weblogs that reference
canvas要素で任意の座標の色を取得する from comiblog

Home > Blog > canvas要素で任意の座標の色を取得する

Search
Feeds
Meta

Return to page top


Warning: include_once() [function.include-once]: Unable to access /virtual/aster/public_html/blog.comikura.net/wp-content/plugins/wp-slimstat-ex/lib/external.php in /virtual/aster/public_html/blog.comikura.net/wp-content/themes/wp.vicuna/myfunctions.php on line 15

Warning: include_once(/virtual/aster/public_html/blog.comikura.net/wp-content/plugins/wp-slimstat-ex/lib/external.php) [function.include-once]: failed to open stream: No such file or directory in /virtual/aster/public_html/blog.comikura.net/wp-content/themes/wp.vicuna/myfunctions.php on line 15

Warning: include_once() [function.include]: Failed opening '/virtual/aster/public_html/blog.comikura.net/wp-content/plugins/wp-slimstat-ex/lib/external.php' for inclusion (include_path='.:/usr/local/lib/php') in /virtual/aster/public_html/blog.comikura.net/wp-content/themes/wp.vicuna/myfunctions.php on line 15