我解决了这个问题!
我添加了一个可选的UIImage(tempImage),用于临时保存在内存中。
调用“saveButtonDown()”时,我检查tempImage是否为nil。
如果是nil,我只打印一条错误消息(没有图像)。
如果不是nil,则必须在“setButtonDown()”处初始化。
这是我的完整源代码。
非常感谢。
import UIKit
import GPUImage
class ViewController: UIViewController {
var inputUIImage = UIImage(named: "testImage.png")
@IBOutlet weak var renderView: RenderView!
var pictureInput: PictureInput!
var filterColorInversion = ColorInversion()
var tempImage: UIImage?
@IBAction func setButtonDown(_ sender: UIButton) {
pictureInput = PictureInput(image: inputUIImage!)
tempImage = inputUIImage!.filterWithOperation(filterColorInversion)
pictureInput --> filterColorInversion --> renderView
pictureInput.processImage()
}
@objc func saveImageFailedCallback(_ image: UIImage, didFinishSavingWith error: NSError?, contextInfo context: UnsafeMutableRawPointer?) {
print("\(String(describing: error))")
}
@IBAction func saveButtonDown(_ sender: UIButton) {
if (tempImage != nil) {
UIImageWriteToSavedPhotosAlbum(tempImage!, self, #selector(saveImageFailedCallback(_:didFinishSavingWith:contextInfo:)), nil)
} else {
print("No Image")
}
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}