检测 UIImage 是不是不包含图像

Posted

技术标签:

【中文标题】检测 UIImage 是不是不包含图像【英文标题】:Detect if UIImage not contain an image检测 UIImage 是否不包含图像 【发布时间】:2015-12-23 07:55:16 【问题描述】:

我正在尝试检测某些 UIImage 是否为空或包含图像。 所有的 UIImages 都有一个实例,所以我不能问是否image == nil。 我也试过这段代码:

CGImageRef cgref = [image CGImage];
CIImage *cim = [image CIImage];

if (cim == nil && cgref == NULL)

    NSLog(@"no underlying data");

但它不适合我。 我还尝试将图像转换为 NSData 并检查字节的大小,但“空”图像大小接近正常大小。

顺便说一句 - 所有 UIImage 的大小都相同(宽度和高度)。

还有其他想法吗?

VS

【问题讨论】:

你检查过图片的大小和高度,如果两者都是0和0则没有图片 check this 是的,我试过了。所有图像的宽度和高度都相同。 检查使用 [Image isKindOfClass:[UIImage class]] 它始终是 UIImage,正如您在添加的图片中看到的那样。 【参考方案1】:
- (NSString *)contentTypeForImageData:(NSData *)data

    uint8_t c;
    [data getBytes:&c length:1];

    switch (c) 
        case 0xFF:
            return @"image/jpeg";
        case 0x89:
            return @"image/png";
        case 0x47:
            return @"image/gif";
        case 0x49:
        case 0x4D:
            return @"image/tiff";
    
    return nil;

并将您的图像转换为 nsdata 并进行测试:

NSData *imageData = //convert your image to NSData
if([self contentTypeForImageData:imageData] == nil) 
     NSLog(@"no underlying imageView");
 else 
     NSLog(@"underlying imageView");

希望对你有帮助。

【讨论】:

它看起来不错,但对我不起作用 :) 您的代码的所有结果都是相同的(有和没有图像)。【参考方案2】:

尝试使用CGImageGetAlphaInfo() 并检查值是否为kCGImageAlphaOnly

其实,这只是一个想法。目前我无法自行检查。

【讨论】:

以上是关于检测 UIImage 是不是不包含图像的主要内容,如果未能解决你的问题,请参考以下文章

UIImage 实现/分页?

检查 UIImage 是不是在视图顶部

Swift/Xcode6:PDF 图像是不是与 UIImage(named:) 一起使用?

将 UIImage 保存到文件而不是 NSUserDefaults

调整透明图像(UIImage)的大小而不获得黑色背景

使用 VNRectangleObservation 裁剪 UIImage