CGContext中的alpha像素数

我有一个屏蔽CGContext有两种类型的像素:颜色和alpha(不透明和透明像素)。 如何在我的上下文中计算alpha像素的百分比?

我没有测试它,但这应该做的 – 只需传递一个CGImageRef ReportAlphaPercent:

 UIImage *foo; //The image you want to analyze float alphaPercent = ReportAlphaPercent(foo.CGImage); float ReportAlphaPercent(CGImageRef imgRef) { size_t w = CGImageGetWidth(imgRef); size_t h = CGImageGetHeight(imgRef); unsigned char *inImage = malloc(w * h * 4); memset(inImage, 0, (h * w * 4)); CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); CGContextRef context = CGBitmapContextCreate(inImage, w, h, 8, w * 4, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big); CGContextSetInterpolationQuality(context, kCGInterpolationHigh); CGContextSetShouldAntialias(context, NO); CGContextDrawImage(context, CGRectMake(0, 0, w, h), imgRef); int byteIndex = 0; int alphaCount = 0; for(int i = 0; i < (w * h); i++) { if (inImage[byteIndex + 3]) { // if the alpha value is not 0, count it alphaCount++; } byteIndex += 4; } free(inImage); CGContextRelease(context); CGColorSpaceRelease(colorSpace); return (float) alphaCount / (w * h); }