私はobjective-cを使って画面の平均色を計算する方法を見つけようとしています。Mac画面の平均色
これまでのところ私は素晴らしい作品のスクリーンショットを取得するために、このコードを使用します。
CGImageRef image1 = CGDisplayCreateImage(kCGDirectMainDisplay);
NSBitmapImageRep *bitmapRep = [[NSBitmapImageRep alloc] initWithCGImage:image1];
// Create an NSImage and add the bitmap rep to it...
NSImage *image = [[NSImage alloc] init];
[image addRepresentation:bitmapRep];
今私の問題は、この画像の平均RGBカラーを計算することです。
Iは、(等しい)の解を見つけたが、RG及びB色成分が常に同じになるように計算した。
NSInteger i = 0;
NSInteger components[3] = {0,0,0};
unsigned char *data = [bitmapRep bitmapData];
NSInteger pixels = ([bitmapRep size].width *[bitmapRep size].height);
do {
components[0] += *data++;
components[1] += *data++;
components[2] += *data++;
} while (++i < pixels);
int red = (CGFloat)components[0]/pixels;
int green = (CGFloat)components[1]/pixels;
int blue = (CGFloat)components[2]/pixels;
で同様の質問がありますか?または、3つのチャンネルの値は何になるのですか? – I82Much
あなたのアルゴリズムでは、a)ピクセル内の各チャンネルはi)「符号なしの文字」に適合し、ii)整数として格納され、b)チャンネルはアルファ成分なしでRGB順に格納されます。これらの事柄はすべて本当であると確信していますか? 'bitsPerPixel'と' samplesPerPixel'の値を知っていますか? –
それは常に私に等しい赤、緑、青の値を与えます。たとえば赤= 87緑= 87青= 87 Josh、 いいえわからない。基本的には、画面の平均RGBカラーを取得する最良の方法を見つける方法が必要です。 –