判断是否为gif/png图片的正确姿势

1.在能取到图片后缀的前提下

1
2
3
4
5
6
7
8
9
//假设这是一个网络获取的URL
// 判断是否为gif
NSString *extensionName = path.pathExtension;
if    ([extensionName.lowercaseString isEqualToString:@   "gif"   ]) {
       //是gif图片
  else    {
       //不是gif图片
    }

2.不知道时.其实就是取出图片数据的第一个字节, 就可以判断出图片的真实类型那该怎么做呢如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//通过图片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;
}

其实图片数据的第一个字节是固定的,一种类型的图片第一个字节就是它的标识, 我们来调用一下这个方法:

1
2
3
4
5
6
7
//假设这是一个网络获取的URL
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:path]];
//调用获取图片扩展名
NSString *string = [self contentTypeForImageData:data];
//输出结果为 png
NSLog(@   "%@"   ,string);

转载于:https://www.cnblogs.com/shifu/p/5794575.html

 
03-09 06:14
查看更多