1

我尝试计算图像的黑白部分的百分比。但是,我得到的结果不是逻辑。看一看:

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);
4

0 回答 0