相机

A badge showing the current build status on bitrise. Please click to view more A badge showing the Swift Compatibility of the project. A badge showing the platform compatibility of the project.

概述

一个旨在为与 iOS 相机交互提供简化 API 的软件包,具有以下功能

该 API 可以在 Camera 接口中找到。

安装

前往 File > Swift Packages > Add Package Dependency 并添加以下 URL

https://github.com/samst-one/CameraCapture

用法

  1. 首先我们需要将相机导入到项目中,通过导入框架来实现。
import CameraCapture
  1. 接下来,我们需要创建一个 Camera 对象。Camera 对象充当该软件包的 API。要创建 Camera 对象,我们这样做
let camera = CameraFactory.make()
  1. 有了 camera 对象,我们现在可以访问 API。有关 API 的更详细分解,请查看 Camera。要获取可用于拍照的可用设备列表,请调用
camera.availableDevices
  1. 从上面的选择中选择一个相机,并使用返回的 Device 中的 id 设置相机。如果在当前设备上找不到相机,则会抛出 CameraSourcingError.invalidCamera 错误。
do {
    try camera.set(camera!.id)
} catch let error {
    print(error)
}
  1. 设置您想要显示预览的预览视图。也可以将其包装在 UIViewRepresentable 中。
let previewView = camera.previewView
view.addSubview(previewView)
  1. 接下来,我们可以启动相机。当相机完成启动过程后,将调用回调。这将在 previewView 中显示预览。
camera.start {
    // Do stuff here
}
  1. 当您准备好拍照时,请在 Camera 对象上调用 takePhoto。如果成功,将返回图像的 Data 表示形式。如果发生错误,则将返回 PhotoCaptureError 错误。
camera.takePhoto(with: CameraSettings(fileType: .jpeg)) { result in
    switch result {
    case .success(let data):
        let image = UIImage(data: data) 
        break
    case .failure(let error):
        break
    }
}

总结

总之,要启动相机并拍照,完整的代码如下

let camera = CameraFactory.make()
let selectedDevice = camera.availableDevices.randomElement()

let view = camera.previewView

do {
    try camera.set(camera!.id)
} catch let error {
    print(error)
}

view.addSubview(view)

camera.start {
    camera.takePhoto(with: CameraSettings(fileType: .jpeg)) { result in
        switch result {
        case .success(let data):
            let image = UIImage(data: data)
            break
        case .failure(let error):
            break
        }
    }
}