【问题标题】: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则没有图片
  • 是的,我试过了。所有图像的宽度和高度都相同。
  • 检查使用 [Image isKindOfClass:[UIImage class]]
  • 它始终是 UIImage,正如您在添加的图片中看到的那样。

标签: ios objective-c 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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    • 2014-03-30
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多