判断是否为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);
|