我尝试执行以下操作来显示图片,而不是在TARGET_IPHONE_SIMULATOR
为真时尝试访问视频。
UIImage *image = [UIImage imageNamed:@"fake_camera"];
GPUImagePicture *fakeInput = [[GPUImagePicture alloc] initWithImage:image];
GPUImageBuffer *videoBuffer = [[GPUImageBuffer alloc] init];
[fakeInput processImage];
[fakeInput addTarget:videoBuffer];
[videoBuffer addTarget:self.backgroundImageView]; //backgroundImageView is a GPUImageView
这使我的backgroundImageView
呈现黑色而不显示我的图像。
如果我直接将fakeInput
的输出发送到backgroundImageView
,我会看到 backgroundImageView
中正常呈现的图片。
这里发生了什么?
编辑:
布拉德推荐我试过:
UIImage *image = [UIImage imageNamed:@"fake_camera"];
_fakeInput = [[GPUImagePicture alloc] initWithImage:image];
GPUImagePicture *secondFakeInput = [[GPUImagePicture alloc] initWithImage:image];
[_fakeInput processImage];
[secondFakeInput processImage];
[_fakeInput addTarget:_videoBuffer];
[secondFakeInput addTarget:_videoBuffer];
[_videoBuffer addTarget:_backgroundImageView];
我也尝试过:
UIImage *image = [UIImage imageNamed:@"fake_camera"];
_fakeInput = [[GPUImagePicture alloc] initWithImage:image];
[_fakeInput processImage];
[_fakeInput processImage];
[_fakeInput addTarget:_videoBuffer];
[_videoBuffer addTarget:_backgroundImageView];
这两种方法似乎都不起作用......应该吗?
答案 0 :(得分:1)
GPUImageBuffer顾名思义,它会缓冲帧。如果您向其发送静态照片,则会缓冲该图像,但尚未发送。您需要向其发送第二张图像(或第二次使用-processImage
)以获得一帧深度的默认缓冲区以显示原始帧。
GPUImageBuffer对静止图像实际上没有任何作用。它旨在作为视频的帧延迟操作,以进行帧到帧的比较,如低通滤波器。如果你需要对静止图像进行帧比较,混合是一种更好的方法。