首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GPUImageStillCamera不起作用

GPUImageStillCamera不起作用
EN

Stack Overflow用户
提问于 2014-04-30 09:47:31
回答 2查看 996关注 0票数 0

我有一个UIViewController,它有这样的子层次结构

然后,我使用这个代码显示摄像机预览。

代码语言:javascript
复制
stillCamera = [[GPUImageStillCamera alloc] init];
stillCamera.outputImageOrientation = UIInterfaceOrientationPortrait;

filter = [[GPUImageStretchDistortionFilter alloc] init];
[filter prepareForImageCapture];
[stillCamera addTarget:filter];
GPUImageView *filterview = [[GPUImageView alloc] init];
_preview = filterview;
[filter addTarget:filterview];

[stillCamera startCameraCapture];

变量_preview是一个将类设置为_previewUIView。在上面的层次图上,它是所选的。

当我显示视图时,它在_preview上什么也没有显示。只是一个空白的UIView。我做错什么了?

当我将行_preview = filterview更改为self.view = filterview时,它正常工作。一定要是self.view

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-30 16:20:53

我认为以上代码的问题就在下面几行:

代码语言:javascript
复制
GPUImageView *filterview = [[GPUImageView alloc] init];
_preview = filterview;

如果您已经在Interface中定义了GPUImageView,那么_preview将指向您在IB中与该视图关联的属性。上面的代码将指针替换为一个不是在IB中定义的视图。因此,您的可见视图将永远不会得到您的相机内容。

您需要移除这两行并使用

代码语言:javascript
复制
[filter addTarget:_preview];

确保您的上述设置是在您的视图控制器有机会正确地将您的网点与您的NIB相关联之后,并且IB中的视图确实是一个GPUImageView。

票数 3
EN

Stack Overflow用户

发布于 2014-04-30 15:25:28

您几乎已经有了,首先以编程的方式尝试一下,因为我有一个非常类似的情况正在发生,它正在工作:

  1. 制造你的相机: stillCamera = [GPUImageStillCamera alloc init]; stillCamera.outputImageOrientation = UIInterfaceOrientationPortrait;
  2. 预览视图: GPUImageView *previewView = [[GPUImageView alloc] initWithFrame:CGRectMake(x, y, w, h)];
  3. 做好你的过滤器: filter = [[GPUImageStretchDistortionFilter alloc] init];
  4. 现在,将您的过滤器添加到相机中: [stillCamera addTarget:filter];
  5. 最后,将摄像机添加到previewView中: [stillCamera addTarget:previewView];

编辑:

太傻了!现在需要将previewView添加到实际视图中!试试这个:

代码语言:javascript
复制
[self.view addSubview:previewView];

试试看,GPUImage一开始可能有点令人困惑,但经过一些改进,它就能工作了!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23384831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档