我正在从第三方提供的 URL 加载图像。 URL 上没有文件扩展名(或文件名)(因为它是一个模糊的 URL)。我可以从中获取数据(以 NSData 的形式)并将其加载到 UIImage 中并正常显示。
我想将这些数据保存到一个文件中。但是,我不知道数据是什么格式(PNG、JPG、BMP)?我假设它是 JPG(因为它是来自网络的图像)但是是否有一种程序化的方法可以确定?我查看了 StackOverflow 和文档,但没有找到任何内容。
TIA。
编辑:我真的需要文件扩展名吗?我将它保存到外部存储(Amazon S3),但考虑到它将始终在 iOS 或浏览器的上下文中使用(两者似乎都可以在没有扩展名的情况下解释数据)也许这不是问题.
最佳答案
如果图像文件有 NSData,则可以通过查看第一个字节来猜测内容类型:
+ (NSString *)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";
}
return nil;
}
关于iphone - 从 NSData 或 UIImage 查找图像类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4147311/