トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     Flash8における各画素のRGB情報の取得
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
kumagaya
Åê¹ÆNo.31275
投稿日時: 2007-1-10 17:26
新米
居住地:
投稿: 11
使用環境:
WinXP
Flash8Pro
10.2.8
FlashMX2004
FlashMX
Flash8における各画素のRGB情報の取得
お聞きしたいことがあります。

Flash8において、各画素のRGBの0?255までの情報を取得
して配列にしまいたいと思っているのですが、Flash8では可能
なのでしょうか。

大変悩んでいるので、お助けいただけたらと思います。
ひろゆき
Åê¹ÆNo.31276
投稿日時: 2007-1-10 17:33
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: Flash8における各画素のRGB情報の取得
引用:
kumagayaさんは書きました:
Flash8において、各画素のRGBの0?255までの情報を取得
して配列にしまいたいと思っているのですが、Flash8では可能
なのでしょうか。

アカウント編集」で、編集環境は書いておきましょう
プロフィール・使用環境記入のお願い
署名ではなく、プロフィールの編集環境欄に
お書きになった方がよろしいかと思いますが。

BitmapData で、getPixel() を用いれば、可能でしょう。

Flashゲーム講座&ASサンプル集【ビットマップデータについて】
画像の色情報を取得する (1)
が参考になるでしょうか。


----------------
質問する際は、回答者に具体的な情報を与えてください。

kumagaya
Åê¹ÆNo.31280
投稿日時: 2007-1-10 18:36
新米
居住地:
投稿: 11
使用環境:
WinXP
Flash8Pro
10.2.8
FlashMX2004
FlashMX
Re: Flash8における各画素のRGB情報の取得
ありがとうございます。
早速やってみました。
しかし、私の勘違いか、出力される値が違います。


	pixel = new Array();
	pixel2 = new Array();
	for (y=0; y<=550; y++) {
		for (x=0; x<=300; x++) {
			p = mc.getPixel(x, y);
			pixel[0, x, y] = (p & 0xFF0000) >> 16;//red
			pixel[1, x, y] = (p & 0xFF0000) >> 8;//
			pixel[2, x, y] = p & 0x0000FF;
			trace(pixel1[0,x,y]);
		}
	}



初心者なのですみません。
ひろゆき
Åê¹ÆNo.31282
投稿日時: 2007-1-10 18:47
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: Flash8における各画素のRGB情報の取得
何を参考にされて、どのようなことをなさっているのでしょうか?
スクリプトを記載するだけでなく、
第三者にも再現できるような説明が必要だと思います。

例えば、mc とは何を指しているのでしょう?

また、BitmapData が出てこないようですが、
もう少しリンク先をお読みになって、
試行錯誤される必要があるように思います。
あるいは、ヘルプで「BitmapData」や「getPixel」をお読みのうえ、
下調べをされてもよいのではないでしょうか?


引用:
しかし、私の勘違いか、出力される値が違います。

「違う」とおっしゃっても、
何を期待して、どのような結果になったのかは、
説明されないと分からないと思いますが。


----------------
質問する際は、回答者に具体的な情報を与えてください。

kumagaya
Åê¹ÆNo.31283
投稿日時: 2007-1-10 19:17
新米
居住地:
投稿: 11
使用環境:
WinXP
Flash8Pro
10.2.8
FlashMX2004
FlashMX
Re: Flash8における各画素のRGB情報の取得
お返事ありがとうございます。
軽率でした。

少し下調べして、やってみた結果から
もう一度質問させていただきます。
kumagaya
Åê¹ÆNo.31289
投稿日時: 2007-1-10 22:48
新米
居住地:
投稿: 11
使用環境:
WinXP
Flash8Pro
10.2.8
FlashMX2004
FlashMX
Re: Flash8における各画素のRGB情報の取得
一応やってみました。
ひろゆきさんのご紹介してくれました、
http://www.project-nya.jp/modules/weblog/details.php?blog_id=432を参考にして、
ステージ上に、ムービークリップ(インスタンス名:bitmap_mc)
ライブラリ上に、pict.jpg(リンケージ:pict.jpg)
としてあります。

まずは、rgb全色の値を取得してみようということで、
以下のようにやってみました。

on (release) {
	import flash.display.BitmapData;
	var pict_bd = BitmapData.loadBitmap("pict.jpg");
	bitmap_mc.attachBitmap(pict_bd, 0);
	p = pict_db.getPixel(1, 1);
	trace(p);
}


traceにて、値を書き出してみると、undefinedと表示されます。
上記のコードであっているのか少し不安です。

ご助言いただけたらと思います。宜しくお願いします。
ひろゆき
Åê¹ÆNo.31290
投稿日時: 2007-1-10 23:05
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: Flash8における各画素のRGB情報の取得
引用:
kumagayaさんは書きました:
traceにて、値を書き出してみると、undefinedと表示されます。
上記のコードであっているのか少し不安です。

正しく取得できていないのですから、問題があると考え、
自分の書いたスクリプトを見直してみることですね。

pict_db ではなく、pict_bd だと思います。


フレームアクションとして記述した方が、説明するのも楽だと思いますので、
以下のようにも、できると思います。

ボタンにインスタンス名 colorBtn とつける。

_root 第1フレームに
import flash.display.BitmapData;
var pict_bd:BitmapData = BitmapData.loadBitmap("pict.jpg");
//bitmap_mc.attachBitmap(pict_bd, 0);

colorBtn.onRelease = function():Void {
	var p:Number = pict_bd.getPixel(1, 1);
	trace(p);
};
と記述。


----------------
質問する際は、回答者に具体的な情報を与えてください。

kumagaya
Åê¹ÆNo.31292
投稿日時: 2007-1-10 23:18
新米
居住地:
投稿: 11
使用環境:
WinXP
Flash8Pro
10.2.8
FlashMX2004
FlashMX
Re: Flash8における各画素のRGB情報の取得
お返事ありがとうございます。



引用:
pict_db ではなく、pict_bd だと思います。


うっかりミスでした。すみません。

また、具体的なアドバイスをありがとうございます。
少しまたやってみます。
kumagaya
Åê¹ÆNo.31319
投稿日時: 2007-1-12 23:24
新米
居住地:
投稿: 11
使用環境:
WinXP
Flash8Pro
10.2.8
FlashMX2004
FlashMX
Re: Flash8における各画素のRGB情報の取得
実際に作ってみての、報告です。

ボタン1(配列に画素値を入れる)
on (release) {
	import flash.display.BitmapData;
	pict_db = BitmapData.loadBitmap ("pict.jpg", false);
	bitmap_mc.attachBitmap (pict_db, 0);
	pixel = new Array ();
	for (yy = 0; yy <= 240; yy++) {
		pixel[yy] = new Array ();
		for (i = 0; i <= 3; i++) {
			pixel[i][yy] = new Array ();
			for (xx = 0; xx <= 320; xx++) {
				pixel[i][xx][yy] = 0;
			}
		}
	}
	for (yy = 0; yy <= 240; yy++) {
		for (xx = 0; xx <= 320; xx++) {
			p = pict_db.getPixel (xx, yy);
			pixel[0][xx][yy] = p % 256;
			pixel[1][xx][yy] = int (p / 256) % 256;
			pixel[2][xx][yy] = int (p / 65536) % 256;
		}
	}
}


ボタン2
二値化処理
on (release) {
	pict_db2 = new flash.display.BitmapData (320, 240, false);
	bitmap_mc2.attachBitmap (pict_db2, 0);
	pixel2 = new Array ();
	for (yy = 0; yy <= 240; yy++) {
		pixel2[yy] = new Array ();
		for (i = 0; i <= 3; i++) {
			pixel2[i][yy] = new Array ();
			for (xx = 0; xx <= 320; xx++) {
				pixel2[i][xx][yy] = 0;
			}
		}
	}
	for (yy = 0; yy <= 240; yy++) {
		for (xx = 0; xx <= 320; xx++) {
			if (pixel[0][xx][yy] <= 89) {
				pixel2[0][xx][yy] = 0;
				pixel2[1][xx][yy] = 0;
				pixel2[2][xx][yy] = 0;
				cl = (pixel2[0][xx][yy] << 16) | (pixel2[1][xx][yy] << 8) | (pixel2[2][xx][yy] << 0);
				pict_db2.setPixel (xx, yy, cl);
			}
			else {
				pixel2[0][xx][yy] = 255;
				pixel2[1][xx][yy] = 255;
				pixel2[2][xx][yy] = 255;
				cl = (pixel2[0][xx][yy] << 16) | (pixel2[1][xx][yy] << 8) | (pixel2[2][xx][yy] << 0);
				pict_db2.setPixel (xx, yy, cl);
			}
		}
	}
}


私のやりたいことができました。
今後は、ひろゆきさんが示してくださったフレームアクションにしていきたいと思います。

ありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops