判断UIImage是png还是jpg
时间: 2023-11-16 21:06:28 浏览: 90
可以通过UIImage的CGImage属性获取到UIImage对应的CGImageRef对象,然后再通过CGImageGetDataProvider和CGDataProviderCopyData函数获取到CGDataProviderRef对象和NSData对象,最后通过NSData对象的bytes方法获取到图像的数据,判断数据的前几个字节就可以区分出是png还是jpg格式。
具体代码如下:
```
- (BOOL)isPNGImage:(UIImage *)image {
CGImageRef cgImage = image.CGImage;
CGDataProviderRef provider = CGImageGetDataProvider(cgImage);
NSData *data = (id)CFBridgingRelease(CGDataProviderCopyData(provider));
if (data.length >= 4) {
const unsigned char *bytes = [data bytes];
if (bytes[0] == 0x89 && bytes[1] == 0x50 && bytes[2] == 0x4E && bytes[3] == 0x47) // PNG signature
return YES;
}
return NO;
}
- (BOOL)isJPEGImage:(UIImage *)image {
CGImageRef cgImage = image.CGImage;
CGDataProviderRef provider = CGImageGetDataProvider(cgImage);
NSData *data = (id)CFBridgingRelease(CGDataProviderCopyData(provider));
if (data.length >= 2) {
const unsigned char *bytes = [data bytes];
if (bytes[0] == 0xFF && bytes[1] == 0xD8) // JPEG signature
return YES;
}
return NO;
}
```