当我使用标准的[view.layer renderInContext:UIGraphicsGetCurrentContext()];
方法将视图转换为iPhone相机模态视图中的图像时,我得到的只是相机预览所在的黑色控件。
任何人都有解决方案吗?速度不是问题。
答案 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)