web-dev-qa-db-ja.com

画像をデータに、またはその逆に変換する

XcodeでSwiftを使用しており、SQLite dbに保存するために画像をデータに変換する必要があります。また、データベースから取得するときにデータオブジェクトを画像に戻す必要があります。 。何か助けてください?サイモン

11
Simon

Swift 5.1以降

UIImageからDataに変換するには、ファイルサイズを小さくする必要がある場合は、UIImagePNGRepresentationまたはUIImageJPEGRepresentationを使用できます。

_extension UIImage {
    var jpeg: Data? { jpegData(compressionQuality: 1) }  // QUALITY min = 0 / max = 1
    var png: Data? { pngData() } 
}
_

DataからImageに戻すには、UIImage(data:)初期化子を使用する必要があります。

_extension Data {
    var uiImage: UIImage? { UIImage(data: self) }
}
_

遊び場

_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)
    }
}
_
23
Leo Dabus