gpt4 book ai didi

ios - 使用 GPUImage 过滤器动态更改值

转载 作者:行者123 更新时间:2023-11-29 03:33:01 25 4
gpt4 key购买 nike

我正在使用 GPUImage 库 here ,并且有很多示例可以提供帮助,但我在使用过滤器时发现了一件事,它可以很好地与 GPUImageVideoCamera 配合使用。我试图在已经录制的视频上应用过滤器,过滤器工作正常,但是当我尝试更改过滤器的值时,它并没有反射(reflect)出来,因为我没有使用 GPUImageVideoCamera,因为我不必录制视频,但我必须实现滤镜预览,然后应用选定的滤镜并创建新电影。

下面是我的一些代码

- (void)viewDidLoad
{
[super viewDidLoad];

//Creating Filter
filter=[[GPUImageSepiaFilter alloc] init];

//Playing Video
[self playVideo];
}

-(void)playVideo{

if(!movieFile){
movieFile = [[GPUImageMovie alloc] initWithURL:self.videoURL];
movieFile.playAtActualSpeed=YES;
movieFile.playSound=YES;
movieFile.delegate=self;
}



[movieFile addTarget:filter];

CGRect rect=self.viewMovie.frame;
rect.origin=CGPointZero;


self.filterView=[[GPUImageView alloc] initWithFrame:rect];
[self.viewMovie addSubview:self.filterView];

//Rotate the preview to fix portrait recored video to show properly
if([self.transformation isEqualToString:@"portrait"]){
self.filterView.rotation=kGPUImageRotateRight;
}

[self.filterView initMovie];
[filter addTarget:self.filterView];


double delayInSeconds = 0.5;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[movieFile startProcessing];
});

}

- (IBAction)sliderAction:(id)sender {
[self applySliderValue:self.slider.value];
}

//Doesn't work
-(void)applySliderValue:(float)sliderValue{
[((GPUImageSepiaFilter *)filter) setIntensity:sliderValue];
}

感谢任何帮助。

谢谢。

最佳答案

我建议您首先调试 slider 的 Nib 连接:

-(void)applySliderValue:(float)sliderValue{
NSLog(@"sliderValue: %f",sliderValue);
[((GPUImageSepiaFilter *)filter) setIntensity:sliderValue];
}

如果所有连接正确,当您移动 slider 时,您应该会看到调试器快速弹出 0.0 到 1.0 之间的值序列。

如果没有任何反应,则说明您存在 Nib 配置问题。如果值范围超出 0.0-1.0,则说明您存在 UISlider 配置问题。

如果工作正常并且过滤器仍然没有响应,请通过在 GPUImageSepiaFilter 的自定义子类中重写此方法来更深入地挖掘:

- (void)setIntensity:(CGFloat)newIntensity;
{
_intensity = newIntensity;

NSLog(@"intensity: %f",_intensity);

[self setFloat:_intensity forUniform:intensityUniform program:filterProgram];
}

关于ios - 使用 GPUImage 过滤器动态更改值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19523679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com