49 lines
1.2 KiB
Objective-C
49 lines
1.2 KiB
Objective-C
/*
|
|
* This file is part of the SDWebImage package.
|
|
* (c) Olivier Poitrey <rs@dailymotion.com>
|
|
* (c) Fabrice Aneche
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
#import "NSData+ImageContentType.h"
|
|
|
|
|
|
@implementation NSData (ImageContentType)
|
|
|
|
+ (nullable NSString *)sd_contentTypeForImageData:(nullable NSData *)data {
|
|
if (!data) {
|
|
return nil;
|
|
}
|
|
|
|
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;
|
|
}
|
|
|
|
@end
|