Я использую GPUImage в своем приложении, и я застреваю, пытаясь изменить яркость и контрастность изображения.GPUImage GroupFilter, Brightness and Contrast iOS
Я создал GPUImageView с исходным изображением, а также установить фильтр яркости и контрастности фильтр, который будет изменен с UISlider
Так вот мой код:
первый на всех
. ч
__weak IBOutlet GPUImageView* imageView;
.m
GPUImagePicture* sourcePicture;
GPUImageBrightnessFilter *brightnessFilter;
GPUImageContrastFilter *contrastFilter;
когда мой контроллер зрения, загружен я следующую вещь:
UIImage* image = "[image fromAnotherViewController]";
sourcePicture = [[GPUImagePicture alloc] initWithImage:image smoothlyScaleOutput:YES];
brightnessFilter = [[GPUImageBrightnessFilter alloc] init];
contrastFilter = [[GPUImageContrastFilter alloc] init];
[brightnessFilter forceProcessingAtSize:imageView.sizeInPixels];
[contrastFilter forceProcessingAtSize:imageView.sizeInPixels];
[sourcePicture addTarget:brightnessFilter];
[brightnessFilter addTarget:contrastFilter];
[contrastFilter addTarget:imageViewBewo];
[sourcePicture processImage];
и здесь контраст и значение яркости изменили методы
- (IBAction)brightnessValueChanged:(id)sender
{
[brightnessFilter setBrightness:brightnessSlider.value];
[sourcePicture processImage];
}
- (IBAction)contrastValueChanged:(id)sender
{
[contrastFilter setContrast:contrastSlider.value];
[sourcePicture processImage];
}
все в порядке, пока здесь, так что у меня есть чтобы применить фильтр к изображению
- (IBAction) applyFilterAction:(id)sender
{
[sourcePicture removeAllTargets];
GPUImageLordKelvinFilter* filterEffect = [[GPUImageLordKelvinFilter alloc] init];
[filterEffect forceProcessingAtSize:imageView.sizeInPixels];
[brightnessFilter forceProcessingAtSize:imageView.sizeInPixels];
[contrastFilter forceProcessingAtSize:imageView.sizeInPixels];
[sourcePicture addTarget:brightnessFilter];
[brightnessFilter addTarget:contrastFilter];
[brightnessFilter addTarget:filterEffect];
[filterEffect addTarget:imageView];
[brightnessFilter setBrightness:brightnessSlider.value];
[contrastFilter setContrast:contrastSlider.value];
[sourcePicture processImage];
}
фильтр применяется правильно, но когда я перемещаю свой слайдер, изображение eView назад к исходному изображению, с изменением контрастности и яркости, но без эффекта фильтра.
, но, если я могу изменить яркость и контрастность в то же время я применить эффект фильтра, яркость или контраст применяется правильно эффект фильтра, например, что-то вроде этого:
// in applyFilterAction: methods
.
.
.
[filterEffect addTarget:imageView];
[brightnessFilter setBrightness:-0.5];
[contrastFilter setContrast:2.5];
[sourcePicture processImage];
.
.
.
Может кто-нибудь дать мне нужна помощь в применении фильтров и изменении их значений, я думаю, что я делаю что-то неправильно с методами addTarget
, я искал что-то об этом, но ничего не нашел
Спасибо за ваш ответ @ Брэд Ларсон, я действительно ценю это это мой код теперь applyFilterAction: '[sourcePicture removeAllTargets] ; [яркостьFilter removeAllTargets]; [contrastFilter removeAllTargets]; . . . [sourcePicture addTarget: brightnessFilter]; [яркостьFilter addTarget: contrastFilter]; [contrastFilter addTarget: filterEffect]; ' , но после этого, когда я перемещаю ползунок, яркость и контраст больше не работают. Значения фильтра не изменяются. Знаете ли вы, что происходит? – qwertybunim
Я столкнулся с той же проблемой, могли ли вы запускать ее со статическим изображением и слайдером –