Я использую gpuimage2, но есть трудная проблема.Я пытался решить проблему в течение 3 месяцев, но я не могу этого понять.
Ниже приведен мой код в CameraViewController. Я сделал снимок и передал изображение в ImageFilterViewController.
let pictureOutput = PictureOutput() (self.filterOperation?.filter)!
--> pictureOutput
guard let destVC = self.storyboard?.instantiateViewController(withIdentifier: "ImageFilterViewController") as? ImageFilterViewController else { return }
pictureOutput.imageAvailableCallback = { image in
destVC.stillImage = image
destVC.pictureOutput = pictureOutput
DispatchQueue.main.async {
self.navigationController?.pushViewController(destVC, animated: true)
}
}
}
`
следующий код ImageFilterViewController
`
override func viewDidLoad() {
super.viewDidLoad()
...
let filterImage = stillImage.filterWithOperation(filter)
}
`
в первый раз, проблем нет.Я могу получить отфильтрованное изображение, но если я вернусь к CameraViewController и снова захвату, отфильтрованного изображения не будет.Я проверил stillImage и filter не NIL.
Я проследил код и проверил, что imageAvailableCallback не был обратным вызовом во второй раз.
` public func filterWithPipeline(_ pipeline:(PictureInput, PictureOutput) -> ()) -> UIImage? {
let picture = PictureInput(image:self)
var outputImage:UIImage?
let pictureOutput = PictureOutput()
pictureOutput.onlyCaptureNextFrame = false
pictureOutput.imageAvailableCallback = {image in
outputImage = image
}
pipeline(picture, pictureOutput)
picture.processImage(synchronously:true)
return outputImage
}`
Я добавил следующие коды, которые выполняются после захвата, но это былобесполезно.
videoCamera.removeAllTargets()
blendImage?.removeAllTargets()
filterOperation = nil
blendImage = nil
почему после первого раза обратного вызова нет?Помогите мне, пожалуйста.Я сделал все, что мог, но это невозможно.спасибо.