当 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
中正常渲染的图片.
这是怎么回事?
编辑:
按照 Brad 的建议,我尝试了:
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];
这两种方法似乎都不起作用……应该吗?
最佳答案
GPUImageBuffer 顾名思义,它缓冲帧。如果您向其发送一张静态照片,该图像会被缓冲,但尚未发送出去。您需要向其中发送第二张图像(或再次使用 -processImage
)以获得一帧深度的默认缓冲区来显示原始帧。
GPUImageBuffer 对静止图像没有任何作用。它旨在作为视频的帧延迟操作,以便进行帧到帧的比较,如低通滤波器。如果您需要对静止图像进行帧比较,混合是更好的方法。
关于ios - 带有 GPUImageBuffer 目标的 GPUImagePicture?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22325726/