getPixel()値が50%グレーよりも大きいか小さいかどうかを判断します
-
22-09-2019 - |
質問
getPixel()を使用して、各ピクセルが灰色よりも明るいか暗いかどうかをビットマップでループし、判断しようとしています。問題は、getPixel()によって返された値が灰色よりも暗いか明るいかどうかを判断する方法がわからないということです。
ニュートラルグレーは約0x808080またはr:127、g:127、b:127です。これを正確に決定するために、以下のコードを変更するにはどうすればよいですか?
for (var dx:int=0; dx < objectWidth; dx++)
{
for (var dy:int=0; dy < objectHeight; dy++)
{
if (testBmd.getPixel(dx, dy) > GRAY)
{
trace("Lighter than gray!");
} else {
trace("Darker than gray!");
}
}
}
解決
アダムを拡張するため 答え もう少し、このような関数を使用して輝度値を生成できます...
function luminance(myRGB:int):int {
//returns a luminance value between 0 and 255
var R:int = (myRGB / 65536) % 256;
var G:int = (myRGB / 256) % 256;
var B:int = myRGB % 256;
return ((0.3*R)+(0.59*G)+(0.11*B));
}
次に、このような50%のグレーのしきい値をテストできます。
if (luminance(testBmd.getPixel(dx, dy)) > 127)
他のヒント
輝度は答えです - 数学が必要であり、ここで説明してください:
http://www.scantips.com/lumin.html
あなたは続ける方法を知っています:)
編集:
livedocs(livedocs -bitmapdata -getPixel32())、例では、getPixel32()戻り値からr、g、b、値を取得する方法を確認できます。多分あなたは私を使うことができます:
また、リチャード 答え すでに必要なことをしているように見えますが、上記の例と組み合わせると、voilla-あなた自身が輝かしい比較を持っています:
所属していません StackOverflow