私はGPUImageを使用する初心者です。 blurRadiusInPixels
とexcludeCircleRadius
をスライダでキャプチャして調整しているときにGPUImageGaussianSelectiveBlurFilter
を適用すると、フィルタはスムーズに適用され、大きな遅延は見られませんでした。
しかし、私が画像を編集して、上記のパラメータでフィルタを適用すると、画像の処理に非常に大きな遅延があります。GPUImageGaussianSelectiveBlurFilterをカメラキャプチャと画像編集の間に使用する
はここに私のコードである:
...
@IBOutlet weak var photoView: GPUImageView!
var filter: GPUImageGaussianSelectiveBlurFilter?
var imageSource: GPUImagePicture?
...
override func viewDidLoad() {
super.viewDidLoad()
photoView.fillMode = kGPUImageFillModePreserveAspectRatioAndFill
...
filter = GPUImageGaussianSelectiveBlurFilter()
filter?.aspectRatio = 1
filter?.addTarget(photoView)
imageSource = GPUImagePicture(image: image!, smoothlyScaleOutput: true)
imageSource?.addTarget(filter)
imageSource?.processImage()
...
}
...
// This the callback method when the value of the slider is changed.
@IBAction func updateFilterParameters() {
filter?.removeAllTargets()
imageSource?.removeAllTargets()
filter?.blurRadiusInPixels = CGFloat(blurSlider.value)
filter?.excludeCircleRadius = CGFloat(focusSlider.value)/320
filter?.addTarget(photoView)
imageSource?.addTarget(filter)
imageSource?.processImage()
}
ユーザが既にカメラロールから画像を選択した場合、このビューコントローラが提示されます。
ここに、前記ビューコントローラを開くコードがあります。これは、他のビューコントローラから存在することに注意してください:
...
var photoEditor: EditorViewController?
...
func openPhotoEditor(image: UIImage?) {
if image != nil {
photoEditor = storyboard?.instantiateViewController(withIdentifier: "EditorVC") as? EditorViewController
photoEditor?.image = image!
photoEditor?.delegate = self
present(photoEditor!, animated: true, completion: nil)
}
}
...
extension ViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
let image = info[UIImagePickerControllerOriginalImage] as? UIImage
picker.dismiss(animated: false) {
self.openPhotoEditor(image: image)
}
}
}
どのくらいの遅延が効きますか? –
4-8秒に似ています。 – mownier
私にあなたのメールIDを教えたら、デモを転送します。このデモが表示されるはずです –