当UIImagePNGRepresentation始终返回nil

时间:2018-02-15 13:52:57

标签: swift null uiimage save gallery

我想将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。

1 个答案:

答案 0 :(得分:1)

来自Apples文档:

func UIImagePNGRepresentation(_ image: UIImage) -> Data?

如果图像没有数据或者底层CGImageRef包含不支持的位图格式的数据,则此函数可能返回nil。

https://developer.apple.com/documentation/uikit/1624096-uiimagepngrepresentation