将图像转换为数据和反之亦然

Sim*_*mon 10 sqlite image swift xcode7

我在Xcode中使用swift,我需要将图像转换为数据,以便将其保存在SQLite数据库中,并在从数据库中检索数据时将数据对象转换回图像.有什么帮助吗?西蒙

Leo*_*bus 21

Xcode 8.3.1•Swift 3.1

要转换UIImageData您可以使用UIImagePNGRepresentation或者UIImageJPEGRepresentation如果您需要减小文件大小.

extension UIImage {
    var jpeg: Data? {
        return jpegData(compressionQuality: 1)   // QUALITY min = 0 / max = 1
    }
    var png: Data? {
        return pngData()
    }
}
Run Code Online (Sandbox Code Playgroud)

要转换回Image,Data只需要使用UIImage(data:)初始化程序:

extension Data {
    var uiImage: UIImage? {
        return UIImage(data: self)
    }
}
Run Code Online (Sandbox Code Playgroud)

操场

let image = UIImage(data: try! Data(contentsOf: URL(string: "https://i.stack.imgur.com/Xs4RX.jpg")!))!
if let jpegData = image.jpeg {
    print(jpegData.count) // 416318   number of bytes contained by the data object
    if let imageFromData =  jpegData.image {
        print(imageFromData.size)  // (719.0, 808.0)
    }
}
if let pngData = image.png {
    print(pngData.count)  // 1282319
    if let imageFromData =  pngData.image {
        print(imageFromData.size)  // (719.0, 808.0)
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 在swift 4.2中,转换方法简化为image.jpegData(compressionQuality:1)和image.pngData() (2认同)