画像の黒/白部分の割合を計算しようとしています。しかし、私が得た結果は論理的ではありません。見てみましょう:
unsigned char *data = CGBitmapContextGetData(contextMask);
int offset = 0;
if (data == NULL)
{
return 0.0;
}
float sum = 0.0;
for (int x = 0; x < CGImageGetWidth(scratchImage); x++)
{
for (int y = 0; y < CGImageGetHeight(scratchImage); y++)
{
NSLog(@"Offset %d,%d: %hhu", x, y, data[offset+1]);
if (data[offset+1] == 0)
{
sum = sum + 1;
}
offset += 4;
}
}
画像は白黒のみで、0 から 255 までの数字が表示されることがあります。どうもありがとう。
CGImage
の作成方法は次のとおりです。
CFMutableDataRef pixels = CFDataCreateMutable(NULL, imageWidth * imageHeight);
contextMask = CGBitmapContextCreate(CFDataGetMutableBytePtr(pixels),
imageWidth, imageHeight, 8, imageWidth, colorspace, kCGImageAlphaNone);
CGDataProviderRef dataProvider = CGDataProviderCreateWithCFData(pixels);
CGContextSetFillColorWithColor(contextMask, [UIColor blackColor].CGColor);
CGContextFillRect(contextMask, self.frame);
CGContextSetStrokeColorWithColor(contextMask, [UIColor whiteColor].CGColor);
CGContextSetLineWidth(contextMask, _sizeBrush);
CGContextSetLineCap(contextMask, kCGLineCapRound);
CGImageRef mask = CGImageMaskCreate(imageWidth, imageHeight, 8, 8, imageWidth,
dataProvider, nil, NO);
scratchImage = CGImageCreateWithMask(hideImage, mask);