可以直接通过后缀来判断。

  • 通过pathExtension获得后缀名(此方法不严谨,可能存在后缀名被修改的情况)
  • 通过第一个字节判断:
    参考SDWebImage中的方法(如下):
+ (NSString *)sd_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";
     case 0x52:
         // R as RIFF for WEBP
         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 @"image/webp";
         }

         return nil;
 }
 return nil;