ios - UIImage 作为表示但没有文件扩展名

标签 ios swift3 uiimage

我想将图像转换为

UIImagePNGRepresentation
UIImageJPEGRepresentation

但是我不知道文件类型。我刚得到一个没有扩展名的 URL。有没有办法将图像从 URL 保存到文件系统?

// got the data from the URL

let imageData = UIImage(data: data!)

// now I want to write to the filesystem but only way was with a representation as UIImage has no write

if let saveImageData = UIImageXXXXXXRepresentation(imageData!) {
try saveImageData.write(to: URL(fileURLWithPath: localFilename), options: [.atomic])
}

最佳答案

从 URL 中获取图像数据,然后从该数据对象中检查图像类型,如下所示

swift 3

let data: Data = UIImagePNGRepresentation(yourImage)!

extension Data {
    var format: String {
        let array = [UInt8](self)
        let ext: String
        switch (array[0]) {
        case 0xFF:
            ext = "jpg"
        case 0x89:
            ext = "png"
        case 0x47:
            ext = "gif"
        case 0x49, 0x4D :
            ext = "tiff"
        default:
            ext = "unknown"
        }
        return ext
    }
}

objective-c

+ (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;
}

检查完上面你可以存储带有所选扩展名的图像

要从数据中获取扩展,您可以从 here 查看还有

关于ios - UIImage 作为表示但没有文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43090043/

相关文章:

swift - 单元格中的完成处理程序

ios - 为什么这个 UIWebView 到 UIImage 的代码会呈现一个空白图像?

ios - 多次缩放后图像缩小

ios - Firebase电子邮件身份验证系统登录任意帐户:

iphone - 如何在 NSMutableDictionary 中存储自定义对象?

ios - tableview.reloadData() 上的 UISwitch 约束和动画中断

iphone - 如何使用命令行将 "Other Linker Flags"添加到 xcode 项目?

ios - swift 3 WKWebView委托(delegate)WKNavigationDelegate不明确的方法

ios - 使用 Alamofire 使用参数数组上传多个文件

iphone - UIImageView 的图像的多重设置