iPhone:获取摄像头预览(iPhone: Get camera preview)

2019-07-03 12:25发布

我想,也都是对的UIImagePickerController当用户使用相机所显示的图像。 当我得到我要处理的图像,并显示代替普通摄像机视图。

但问题是,当我想要得到相机认为,形象只是一个黑色的矩形。

这里是我的代码:

UIView *cameraView = [[[[[[imagePicker.view subviews] objectAtIndex:0]
                         subviews] objectAtIndex: 0]
                       subviews] objectAtIndex: 0];

UIGraphicsBeginImageContext( CGSizeMake(320, 427) );
[cameraView.layer renderInContext: UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

imageToDisplay.image = [PixelProcessing processImage: viewImage];   //In this case the image is black
//imageToDisplay.image = viewImage; //In this case the image is black too
//imageToDisplay.image = [UIImage imageNamed: @"icon.png"];     //In this case image is being displayed properly

我究竟做错了什么?

谢谢。

Answer 1:

这其中也正在相当不错。 当相机预览打开使用它:

UIImage *viewImage = [[(id)objc_getClass("PLCameraController") 
                      performSelector:@selector(sharedInstance)] 
                      performSelector:@selector(_createPreviewImage)];

但据我发现它带来了比下面的解决方案,这需要将当前屏幕的“屏幕截图”相同的结果:

extern CGImageRef UIGetScreenImage();

CGImageRef cgoriginal = UIGetScreenImage();
CGImageRef cgimg = CGImageCreateWithImageInRect(cgoriginal, rect);            
UIImage *viewImage = [UIImage imageWithCGImage:cgimg];    
CGImageRelease(cgoriginal);                
CGImageRelease(cgimg);  

一个问题,我没有仍然找到一个修复程序,一个人如何可以得到摄像机图像非常快,没有任何重叠?



Answer 2:

非官方的呼叫:

UIGetScreenImage()

您声明@implementation如上:

extern CGImageRef UIGetScreenImage();

可能有记录的方式3.1要做到这一点,但我不知道。 如果没有,请请提交雷达与苹果公司要求他们做出某种屏幕抓取访问公共的!

使用您的相同的AppleID登录到与iPhone开发门户。

更新:此呼叫尚未记录,但苹果已经明确给出了确定与App Store的应用程序使用它。



Answer 3:

至少从目前来看,有没有办法做到这一点。 (当然没有官方记录的方式,而据我所知,没有人要么想出了一个非官方的方式。)

相机预览数据正在以某种方式绕过正常的图形方法和OS绘制。



文章来源: iPhone: Get camera preview