1

以下のコードを使用して色を取得し、グレースケールに変更して保存します。問題は、それが常に青みがかっており、灰色ではないことです。

newBitmapData = new BitmapData(bitmapWidth, bitmapHeight, true);

// Extract individual red, green, and blue values for the pixel:
rgbVal = bitmapData.getPixel(x, y);

redVal = (rgbVal & 0xFF0000) >> 16;
greenVal = (rgbVal & 0x00FF00) >> 8;
blueVal = rgbVal & 0x0000FF;


grayVal = Math.floor(0.3 * redVal + 0.59 * greenVal + 0.11 * blueVal);

newBitmapData.setPixel(x, y, grayVal);

私は何が欠けていますか?

4

2 に答える 2

4

あなたの「grayVal」はその明るさだけであり、その明るさから色を作るには次のようにします。

newBitmapData.setPixel(x, y, Math.min(255,uint(grayVal))*0x10101);
于 2013-01-10T09:25:21.683 に答える
0

赤と緑を再びシフトしませんでした:

redVal = (rgbVal & 0xFF0000) >> 16;
greenVal = (rgbVal & 0x00FF00) >> 8;
blueVal = rgbVal & 0x0000FF;

//shift red and green back to original positions
redVal = int(0.3*redVal)<<16;
greenVal = int(0.59*greenVal)<<8;

grayVal = Math.floor(redVal + greenVal + 0.11*blueVal);
于 2013-01-10T10:39:27.153 に答える