UIImageJPEG表示 | generateJPEGRepresentation 将图像保存为 nil? Swift 3
UIImageJPEGRepresentation | generateJPEGRepresentation saves image as nil? Swift 3
我目前正在使用 Realm 设计一个数据库管理应用程序,我已经成功地创建和检索了一个对象。我遇到的问题是 updating/editing - 特别是更新用户上传的 UIImage。使用 Realm,我保存图像的路径,然后通过加载该路径(在文档目录中)检索它。
当用户试图保存更改后的图像时,出于某种奇怪的原因,UIImageJPEGRepresentation
将更改后的图像保存为 nil,从而删除了用户的图像。这很奇怪,因为最初创建的数据对象存储得很好。
我尝试通过一些调试来检查图像是否正确传递,并发现它做得很好并且保存在正确的路径上。
这是我的更新方法:
func updateImage() {
let documentsDirectoryURL = try! FileManager().url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
let fileURL = documentsDirectoryURL.appendingPathComponent("\(selectedPicPath!)")
if FileManager.default.fileExists(atPath: fileURL.path) {
do {
if profilePic.image != nil {
let image = profilePic.image!.generateJPEGRepresentation()
try! image.write(to: fileURL, options: .atomicWrite)
}
} catch {
print(error)
}
} else {
print("Image Not Added")
}
}
任何人都可以看到任何问题吗?
let image = profilePic.image!.generateJPEGRepresentation()
检查这一行,是返回nil值还是数据?如果为零,则使用以下代码测试您的图像存储,它正在运行。还要确保您的实际图像具有您尝试生成的 JPEG 文件格式扩展名。
func getDocumentsDirectory() -> URL {
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
let documentsDirectory = paths[0]
return documentsDirectory
}
// 对于 PNG 图片
if let image = UIImage(named: "example.png") {
if let data = UIImagePNGRepresentation() {
let filename = getDocumentsDirectory().appendingPathComponent("copy.png")
try? data.write(to: filename)
}
}
对于 JPG 图片
if let image = UIImage(named: "example.jpg") {
if let data = UIImageJPEGRepresentation(image, 1.0) {
let filename = getDocumentsDirectory().appendingPathComponent("copy.jpg")
try? data.write(to: filename)
}
}
我目前正在使用 Realm 设计一个数据库管理应用程序,我已经成功地创建和检索了一个对象。我遇到的问题是 updating/editing - 特别是更新用户上传的 UIImage。使用 Realm,我保存图像的路径,然后通过加载该路径(在文档目录中)检索它。
当用户试图保存更改后的图像时,出于某种奇怪的原因,UIImageJPEGRepresentation
将更改后的图像保存为 nil,从而删除了用户的图像。这很奇怪,因为最初创建的数据对象存储得很好。
我尝试通过一些调试来检查图像是否正确传递,并发现它做得很好并且保存在正确的路径上。
这是我的更新方法:
func updateImage() {
let documentsDirectoryURL = try! FileManager().url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
let fileURL = documentsDirectoryURL.appendingPathComponent("\(selectedPicPath!)")
if FileManager.default.fileExists(atPath: fileURL.path) {
do {
if profilePic.image != nil {
let image = profilePic.image!.generateJPEGRepresentation()
try! image.write(to: fileURL, options: .atomicWrite)
}
} catch {
print(error)
}
} else {
print("Image Not Added")
}
}
任何人都可以看到任何问题吗?
let image = profilePic.image!.generateJPEGRepresentation()
检查这一行,是返回nil值还是数据?如果为零,则使用以下代码测试您的图像存储,它正在运行。还要确保您的实际图像具有您尝试生成的 JPEG 文件格式扩展名。
func getDocumentsDirectory() -> URL {
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
let documentsDirectory = paths[0]
return documentsDirectory
}
// 对于 PNG 图片
if let image = UIImage(named: "example.png") {
if let data = UIImagePNGRepresentation() {
let filename = getDocumentsDirectory().appendingPathComponent("copy.png")
try? data.write(to: filename)
}
}
对于 JPG 图片
if let image = UIImage(named: "example.jpg") {
if let data = UIImageJPEGRepresentation(image, 1.0) {
let filename = getDocumentsDirectory().appendingPathComponent("copy.jpg")
try? data.write(to: filename)
}
}