如何检查uiimage是空的还是空白的

时间:2014-12-15 09:03:04

标签: uiimage cgcontext

我使用以下代码来保存uiimage。在保存图像之前,我想检查图像是空的还是空白。

UIImage * image = UIGraphicsGetImageFromCurrentImageContext();  UIGraphicsEndImageContext();

注意:

UIImage, check if contain image How to check if a uiimage is blank? (empty, transparent)

我无法在上述链接中找到解决方案。感谢!!!

1 个答案:

答案 0 :(得分:2)

我找到了解决上述问题的方法。这有助于将来的任何人。以下功能对于均匀的PNG透明图像非常有效。

-(BOOL)isBlankImage:(UIImage *)myImage
{
typedef struct
{
    uint8_t red;
    uint8_t green;
    uint8_t blue;
    uint8_t alpha;
} MyPixel_T;

CGImageRef myCGImage = [myImage CGImage];

//Get a bitmap context for the image
CGContextRef bitmapContext = CGBitmapContextCreate(NULL, CGImageGetWidth(myCGImage), CGImageGetHeight(myCGImage),
                      CGImageGetBitsPerComponent(myCGImage), CGImageGetBytesPerRow(myCGImage),
                      CGImageGetColorSpace(myCGImage), CGImageGetBitmapInfo(myCGImage));

//Draw the image into the context
CGContextDrawImage(bitmapContext, CGRectMake(0, 0, CGImageGetWidth(myCGImage), CGImageGetHeight(myCGImage)), myCGImage);

//Get pixel data for the image
MyPixel_T *pixels = CGBitmapContextGetData(bitmapContext);
size_t pixelCount = CGImageGetWidth(myCGImage) * CGImageGetHeight(myCGImage);
for(size_t i = 0; i < pixelCount; i++)
{
    MyPixel_T p = pixels[i];
    //Your definition of what's blank may differ from mine
    if(p.red > 0 || p.green > 0 || p.blue > 0 || p.alpha > 0)
        return NO;
}

return YES;
}