在UIImagePickerController中获取相机预览的图像表示

时间:2009-03-02 05:45:01

标签: iphone

当我使用标准的[view.layer renderInContext:UIGraphicsGetCurrentContext()];方法将视图转换为iPhone相机模态视图中的图像时,我得到的只是相机预览所在的黑色控件。

任何人都有解决方案吗?速度不是问题。

4 个答案:

答案 0 :(得分:4)

不可能来自记录的api,但可能。在相机的子视图中找到“PLCameraView”视图,然后调用

CGImageRef img = (CGImageRef)[foundCameraView imageRef];

这将返回对相机保存的图像的引用。

答案 1 :(得分:2)

你可以使用iOS 4.0中的新AVFoundation来做到这一点。

您应该可以调用UIGetScreenImage()(返回UIImage)来获取整个屏幕的当前捕获,包括预览。这就是所有条形码应用程序之前的工作方式。但据说Apple现在不允许使用AVFoundation技术 - 只能在4.0以下工作。

甚至存在问题的全部原因是因为UIGetScreenImage()不是记录的API的一部分,但是Apple使用它做了一个特定的例外。它不像是在拉动当前的应用程序,但它们不允许使用旧技术的新提交(或更新)。

许多人代表游说说服Apple让应用程序开发人员仅使用iOS 3.x的旧技术,所以如果你想使用它,请发送电子邮件给开发者关系。

答案 2 :(得分:0)

不幸的是,这是不可能的。为了提高性能,iPhone使用某种形式的直接渲染将相机预览直接绘制到屏幕上,而不是作为UIView表面的一部分。因此,当您“捕获”相机视图时,您将只获得UIView元素,而不是预览图像。

(FWIW这类似于在Windows / Mac上难以屏蔽某些电影软件的原因)

答案 3 :(得分:0)