[英]Saved Transparent Images returns with a black background in Swift
I am using the following functions to save and retrieve images in my View controller.我正在使用以下函数在我的视图控制器中保存和检索图像。 But, the retrieved image of a saved image, (which is a transparent .png file) returns with a black background.
但是,检索到的已保存图像(它是一个透明的 .png 文件)以黑色背景返回。 Would appreciate if anyone could please let me know how could I resolve this issue?
如果有人可以让我知道我该如何解决这个问题,我将不胜感激? Thanks for the help!
谢谢您的帮助!
func saveImage(image: UIImage) -> Bool {
guard let data = image.jpegData(compressionQuality: 1) ?? image.pngData() else {
return false
}
guard let directory = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) as NSURL else {
return false
}
do {
try data.write(to: directory.appendingPathComponent("fileName.png")!)
return true
} catch {
print(error.localizedDescription)
return false
}
}
func getSavedImage(named: String) -> UIImage? {
if let dir = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) {
return UIImage(contentsOfFile: URL(fileURLWithPath: dir.absoluteString).appendingPathComponent(named).path)
}
return nil
}
JPEG can't support transparency because it uses RGB color space. JPEG 不支持透明度,因为它使用 RGB 颜色空间。 so that you can save png image without compromising.
这样您就可以在不妥协的情况下保存 png 图像。
func saveImage(image: UIImage) -> Bool {
guard let data = image.pngData()
guard let directory = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) as NSURL else {
return false
}
do {
try data.write(to: directory.appendingPathComponent("fileName.png")!)
return true
} catch {
print(error.localizedDescription)
return false
}
}
func getSavedImage(named: String) -> UIImage? {
if let dir = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) {
return UIImage(contentsOfFile: URL(fileURLWithPath: dir.absoluteString).appendingPathComponent(named).path)
}
return nil
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.