美文网首页iOS高质量博客iOS开发攻城狮的集散地Objective-c
iOS 判断图片的类型方法(jpep/png/gif等)

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

作者: JasonEVA | 来源:发表于2016-08-19 11:38 被阅读1273次

    方法

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

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

    相关文章

      网友评论

      • 我本善良:NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:path]]; 这个方法是同步的吧,是否会卡主线程。
        JasonEVA:图片过大是有这个风险,可以放在异步线程中进行,谢谢提醒

      本文标题:iOS 判断图片的类型方法(jpep/png/gif等)

      本文链接:https://www.haomeiwen.com/subject/djjbsttx.html