ios - 保存的透明图像在 Swift 中返回黑色背景
问题描述
我正在使用以下函数在我的视图控制器中保存和检索图像。但是,已保存图像的检索图像(这是一个透明的 .png 文件)返回黑色背景。如果有人能告诉我如何解决这个问题,我将不胜感激?谢谢您的帮助!
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 不支持透明度,因为它使用 RGB 颜色空间。这样您就可以在不妥协的情况下保存 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
}
推荐阅读
- nvidia - OptiX 场景搭建突然很慢
- php - Symfony 4:如何在没有安全性的情况下使登录空间安全?
- android - EditText使用两种方式数据绑定重置游标文本插入
- javascript - 为什么 AJAX 请求不响应失败或成功?
- thymeleaf - 将对象列表映射到 thymeleaf 中的字符串列表
- python - 用 Kafka 发送 python 对象
- python - python的缺失字母方法
- android - 选择字符串中的前 X 个数字并用字符替换每个数字
- java - 尝试在 POSTMAN 中获取一个主题 http://localhost:8080/topics?id=1。收到以下错误
- reactjs - 反应原生视频。如何卸载视频?