iOS 判断图片的类型

从网络获取的图片URL. 举例如下:

   //假设这是一个网络获取的URL   
NSString *path = @"http://pic3.nipic.com/20090709/2893198_075124038_2.png";  
 // 判断是否为png 
  NSString *extensionName = path.pathExtension;    
if ([extensionName.lowercaseString isEqualToString:@"png"]) {
        //是png图片
    } else {
        //不是png图片   
 }
复制代码

其实图片数据的第一个字节是固定的,一种类型的图片第一个字节就是它的标识, 通过data来判断未知图片的类型

 //假设这是一个网络获取的URL
    NSString *path = @"http://pic.rpgsky.net/images/2016/07/26/3508cde5f0d29243c7d2ecbd6b9a30f1.png";
    NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:path]];
    //调用获取图片扩展名
    NSString *string = [self contentTypeForImageData:data];
    //输出结果为 png 
   NSLog(@"%@",string);
复制代码
//通过图片Data数据第一个字节 来获取图片扩展名
- (NSString *)contentTypeForImageData:(NSData *)data {
    uint8_t c;
    [data getBytes:&c length:1];
    switch (c) {
        case 0xFF:
            return @"jpeg";
        case 0x89: 
           return @"png";
        case 0x47:
            return @"gif"; 
        case 0x49:
        case 0x4D:
            return @"tiff";               
        case 0x52:
     if ([data length] < 12) {
          return nil;
      }
     NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(0, 12)] encoding:NSASCIIStringEncoding];
     if ([testString hasPrefix:@"RIFF"] && [testString hasSuffix:@"WEBP"]) {
         return @"webp";
      }
     return nil;
    }
    return nil;
}
复制代码

转载于:https://juejin.im/post/5a93c947f265da4e9a497f26

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值