iOS 获取图片的后缀

//获取图片后缀

+ (NSString *)typeForImageData:(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;

    

}

 

iOS 判断图片的类型方法(jpep/png/gif等)

https://www.jianshu.com/p/54fe55e22b40

2016.08.19 11:38* 字数 31 阅读 1363评论 2

方法

取出图片数据的第一个字节, 就可以判断出图片的真实类型

//通过图片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;
}

使用方法

//假设这是一个网络获取的URL
    NSString *path = @"http://www.yxzoo.com/uploads/allimg/160803/1-160P3113351.jpg";
    NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:path]];
    //调用获取图片扩展名
    NSString *string = [self contentTypeForImageData:data];
    //输出结果为 jpeg
    NSLog(@"%@",string);

 

/** 根据图片二进制流获取图片格式 */ - (NSString *)imageTypeWithData:(NSData *)data {

uint8_t type;

[data getBytes:&type length:1];

switch (type) {

  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;

} 

 

posted @ 2018-07-10 17:16  sundaysios  阅读(1022)  评论(0)    收藏  举报