iphone - iOS 4.0 及更高版本中的相机数码变焦

标签 iphone ios ios4 camera zooming

如何为相机实现数字变焦 slider 。 我使用以下 API:AVCaptureVideoPreviewLayer、AVCaptureSession、AVCaptureVideoDataOutput、AVCaptureDeviceInput。

我想要相同的 slider ,它在 iphone 4 相机应用程序中可用。

提前感谢您提供任何提示和示例!

最佳答案

我是新手,我曾尝试使用 AVCaptureVideoPreviewLayer 仅使用 AVFoundation 框架进行缩放,但我也无法使其工作。我认为这是因为该层有自己的 AVCaptureSession,它控制自己的输出,即使我将它作为子层添加到 UIScrollView,它仍然独立运行并且滚动层不会影响预览层。

在 WWDC session 419,“在 iOS5 中使用 AVFoundation 从相机捕获”,Brad Ford 说“AVCaptureVideoPreviewLayer 不继承自 AVCaptureOutput(就像 AVCaptureVideoDataOutput 一样)。它继承自 CALayer,但可以插入到核心动画树中(像其他层)。在 AVFoundation 中,AVSession 拥有它的输出,但不拥有它的层。层拥有 session 。所以如果你想将一个层插入到 View 层次结构中,你将一个 session 附加到它并忘记它。然后当层树处理自身时,它也会清理 session 。”

我见过 Brad Larson,他使用 Open GL ES 和 AVFoundation 框架的组合: http://www.sunsetlakesoftware.com/2010/10/22/gpu-accelerated-video-processing-mac-and-ios 使用 AVCaptureVideoPreviewLayer,他可以在其中调整来自相机的原始数据,所以我认为这就是开始的地方。查看他的 ColorTrackingCamera 应用程序。它使用您(和我)不需要缩放的着色器,但我认为可以使用类似的机制来缩放。

哦,我忘了说 Brad Larson 没有将 AVCaptureInput 附加到 AVCaptureSession。我可以看到他也在为他的队列使用主线程,而不是在另一个线程上创建他自己的队列。他的Open GL ES methods to drawFrame也是怎么样的 他渲染了图像,而捕获 session 本身并没有这样做。所以,如果你了解更多,或者我的假设是错误的,请告诉我。

希望这会有所帮助,但由于我对所有这些和 OpenGL ES 都不熟悉,所以我假设如果我们可以捕获每一帧并将其转换为具有不同分辨率和/或的 UIImage,则库可以用于缩放帧大小。

杰夫·W.

关于iphone - iOS 4.0 及更高版本中的相机数码变焦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4311746/

相关文章:

iPhone TableView 搜索 XML

ios - 诗丽吉总是将美元显示为货币

ios - 从函数外部更改 UILabel 的文本

ios - addTarget 不适用于在 Swift 中创建的 UIButton

iphone - 如何在 NSString 中硬编码 json

ios - UIButton 不调用 ImageView 中的处理函数

iphone - 导航 Controller 之间的自定义转换

iphone - 如何在 UITableViewCell 中使用具有可变高度的 UITextView?

ios - 在 Visual Studio Tools for Apache Cordova 上设置 iPhone 6 启动图像

iphone - 使用 UIScrollView 生成问题