当用户使用相机时,我想获取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
我做错了什么?
感谢。
答案 0 :(得分:7)
这个也很好用。打开相机预览时使用它:
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);
我还没有找到修复的问题是,如何在没有任何叠加的情况下快速获取相机图像?
答案 1 :(得分:1)
非正式的电话是:
UIGetScreenImage()
在@implementation上面声明为:
extern CGImageRef UIGetScreenImage();
3.1中可能有记录的方法可以做到这一点,但我不确定。如果没有,请向Apple提出Radar,要求他们公开进行某种屏幕抓取!
使用您使用。
登录iPhone开发门户的相同AppleID更新:此调用尚未记录,但Apple明确表示可以将其与App Store应用程序一起使用。
答案 2 :(得分:0)
至少现在,没有办法做到这一点。 (当然没有官方记录的方式,据我所知,也没有人想出非正式的方式。)
操作系统以某种方式绘制了相机预览数据,绕过了普通的图形方法。