我編寫了此代碼以通過UISlider和GPUImageBrightnessFilter更改UIImage的亮度。但每次我測試它的應用程序崩潰。通過uislider和gpuimage過濾器更改圖像的亮度
我的代碼:
- (IBAction)sliderBrightness:(id)sender {
CGFloat midpoint = [(UISlider *)sender value];
[(GPUImageTiltShiftFilter *)brightnessFilter setTopFocusLevel:midpoint - 0.1];
[(GPUImageTiltShiftFilter *)brightnessFilter setBottomFocusLevel:midpoint + 0.1];
[sourcePicture processImage];
}
- (void) brightnessFilter {
UIImage *inputImage = imgView.image;
sourcePicture = [[GPUImagePicture alloc] initWithImage:inputImage smoothlyScaleOutput:YES];
brightnessFilter = [[GPUImageTiltShiftFilter alloc] init];
// sepiaFilter = [[GPUImageSobelEdgeDetectionFilter alloc] init];
GPUImageView *imageView = (GPUImageView *)self.view;
[brightnessFilter forceProcessingAtSize:imageView.sizeInPixels]; // This is now needed to make the filter run at the smaller output size
[sourcePicture addTarget:brightnessFilter];
[brightnessFilter addTarget:imageView];
[sourcePicture processImage];
}
我不確定這是你的問題 - 但是有可能你在之前的「亮度」操作完成之前嘗試在圖像上運行「亮度」效果? – YogevSitton
我可以猜出你的意思,但你能舉個例子嗎?也許這可能是問題所在。 – user3608489
[stillImageSource processImage];需要時間。如果你運行[stillImageSource processImage];再次之前[stillImageSource processImage];完成後,可能會導致一些問題(我記得我在使用GPUImage時遇到了這些問題)。 – YogevSitton