Swift 当UIImagePngResentation始终返回nil时保存UIImage

Swift 当UIImagePngResentation始终返回nil时保存UIImage,swift,null,uiimage,save,gallery,Swift,Null,Uiimage,Save,Gallery,我想将CoreML模型的模型输出保存到库中。它输出一个MLMultiArray,将其转换为UIImage以在设备上显示结果图像。现在,我想将该图像保存到手机存储器中。存在Info.plist中的隐私-照片库使用说明和隐私-媒体库说明。 发现了一些类似的问题,但无法解决问题。我尝试了以下功能: func saveImage() { let imageData = UIImagePNGRepresentation(imageView.image!) let compressedIma

我想将CoreML模型的模型输出保存到库中。它输出一个MLMultiArray,将其转换为UIImage以在设备上显示结果图像。现在,我想将该图像保存到手机存储器中。存在Info.plist中的隐私-照片库使用说明和隐私-媒体库说明。 发现了一些类似的问题,但无法解决问题。我尝试了以下功能:

func saveImage() {
    let imageData = UIImagePNGRepresentation(imageView.image!)
    let compressedImage = UIImage(data: imageData!)
    UIImageWriteToSavedPhotosAlbum(compressedImage!, nil, nil, nil)
    let alert = UIAlertController(title: "Saved", message: "Your image has been saved", preferredStyle: .alert)
    let okAction = UIAlertAction(title: "Ok", style: .default, handler: nil)
    alert.addAction(okAction)
    self.present(alert, animated: true, completion: nil)
}

问题是,模型输出的结果图像始终显示在设备上,但当我尝试保存imageView.image中包含的图像时,函数UIImagePNGRepresentation始终返回nil。

来自Apple文档:

func UIImagePNGRepresentation(_ image: UIImage) -> Data?
如果图像没有数据或基础CGImageRef包含不受支持的位图格式的数据,则此函数可能返回nil


是的,我读过这个。但问题是,什么是数据?像素的亮度值?它们由CoreML神经网络的模型输出生成。我没有像本文中那样从文件加载图像:我想知道,因为结果图像显示正确,所以它应该包含数据?为什么不必要地尝试获取图像的PNG数据,然后从该数据创建新图像?只需将imageView.image传递给UIImageWriteToSavedPhotosAlbum。请注意,UIImageWriteToSavedPhotosAlbum需要iOS 11下Info.plist中的隐私-照片库添加使用说明条目。非常感谢!成功了。之所以这么做,是因为这是我的第一个Swift程序,并阅读了一些关于这方面的教程。