この質問で尋ねられていることと同様のことをしようとしていますが、その質問に対する答えがよくわかりません。それが必要なものかどうかわかりません。
必要なものは単純ですが、簡単かどうかはわかりません。画面上の特定の色のピクセル数を計算したい。私たちが見ている各「ピクセル」は、実際には、たとえば緑色に見えるさまざまな色のピクセルの組み合わせであることを理解しています. だから私が必要とするのは、実際の色、つまりユーザーが見る色です。
たとえば、UIView を作成し、背景色を[UIColor greenColor]
に設定し、その寸法を画面の領域の半分に設定した場合 (簡単にするためにステータス バーが非表示になっており、iPhone を使用していると仮定できます)、この「マジック メソッド」が 240 * 160 または 38,400 を返すことを期待してください - 画面の領域の半分。
誰もこの「魔法の方法」を書き出すとは思っていませんが、知りたいです
a) 可能であれば
b) もしそうなら、ほぼリアルタイムで行われれば
c) その場合、どこから始めればよいか。OpenGLでできると聞いたことがありますが、その分野での経験はありません。
Radif Sharafullin のおかげで、これが私の解決策です。
int pixelsFromImage(UIImage *inImage) {
CGSize s = inImage.size;
const int width = s.width;
const int height = s.height;
unsigned char* pixelData = malloc(width * height);
int pixels = 0;
CGContextRef context = CGBitmapContextCreate(pixelData,
width,
height,
8,
width,
NULL,
kCGImageAlphaOnly);
CGContextClearRect(context, CGRectMake(0, 0, width, height));
CGContextDrawImage(context, CGRectMake(0, 0, width, height), inImage.CGImage );
CGContextRelease(context);
for(int idx = 0; idx < width * height; ++idx) {
if(pixelData[idx]) {
++pixels;
}
}
free(pixelData);
return pixels;
}