iphone - 从 NSData 或 UIImage 查找图像类型

标签 iphone ios uiimage nsdata persist

我正在从第三方提供的 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/

相关文章:

iphone - 如何在 UItextView 中添加 placeHolder 文本?在 iPhone SDK 中

iphone - 推送新 View 时删除工具栏

ios - Sinch - 通过远程通知的调用无法启动

uibutton - 设置 UIButton 图像导致 iOS 7 中的蓝色按钮

iphone - 在 iPhone 中,我可以在两个具有不同值的文本框/uilabel 上添加一个选择器 View 吗?

html - 图像未显示 iPhone(在包括 Android 在内的所有设备上均正常)

ios - Documents 文件夹路径中的十六进制部分是什么?

ios - 在 safari/app store 中快速打开链接

swift - 在 Swift 2.0 中屏蔽图像

iOS 在启用缩放(捏合和双击)的情况下全屏显示 UIImage