CameraKit-iOS 1.2.1

CameraKit-iOS 1.2.1

Austin Kettner 维护。



CameraKit Header

Join Spectrum Buddy.Works

CameraKit 帮助您快速将可靠的相机添加到您的应用中。我们的开源相机平台提供一致的捕获结果,可扩展的服务和无尽的相机可能性。

使用 CameraKit,您可以轻松地完成以下操作

  • 能够扩展并创建自定义会话。
  • 图像和视频捕获可以无缝地与相同的预览会话一起工作。
  • 自动处理系统权限。
  • 自动调整预览大小。
  • 自动处理预览/图像/视频输出方向。
  • 📷能够为捕获照片设置自定义分辨率。
  • 📹能够为捕获视频设置分辨率/帧率。
  • 👱‍ 内置人脸检测。
  • 📐内置叠加网格。
  • 👆内置触摸对焦。
  • 🔍内置捏合缩放。
  • 📸内置闪光灯切换,适用于照片和视频。
  • 🤳内置摄像头位置切换。
  • 🖥与 Objective-C 兼容。

赞助商

Expensify Buddy.Works

安装

演示

如果您想先测试演示应用,您可以克隆此仓库到本地磁盘

git clone https://github.com/CameraKit/camerakit-ios.git

然后导航到 camerakit-ios 并使用 Xcode 打开 CameraKit.xcworkspace 文件。在运行按钮附近选择 CameraKitDemo 方案,使用您的 Apple 帐户解决签名冲突,然后在真实设备上运行它。在模拟器上您无法做太多,因为我们需要实际的相机硬件。

Cocoapods

如果您还没有安装Cocoapods,可以通过在终端中运行以下代码来安装:

sudo gem install cocoapods

如果没有任何Podfile,请运行:

pod init

然后在你的工程中的Podfile文件中添加以下行到你的app target:

pod CameraKit-iOS

它将自动创建一个Podfile文件,并通过创建一个单独的.xcworkspace文件来集成pods到项目中。从现在起,你将打开这个文件在Xcode中。

Carthage

如果您还没有安装Carthage,请运行以下命令:

brew install carthage

然后创建一个Cartfile并在其中添加以下行:

github "CameraKit/camerakit-ios"

Code

在添加与相机相关的代码之前,请确保在app项目的Info.plist文件中包含了您的代码所需的工作权限。

<!-- Required for photos and videos -->
<key>NSCameraUsageDescription</key>
<string></string>

<!-- Optional for photos -->
<key>NSMicrophoneUsageDescription</key>
<string></string>

<!-- Optional for the demo app to copy the photos/videos to your photo library -->
<key>NSPhotoLibraryAddUsageDescription</key>
<string></string>

以下是一个包含session和实时相机预览的快速启动代码示例:

import CameraKit

...

override func viewDidLoad() {
    super.viewDidLoad()

    // Init a photo capture session
    let session = CKFPhotoSession()
    
    // Use CKFVideoSession for video capture
    // let session = CKFVideoSession()
    
    let previewView = CKFPreviewView(frame: self.view.bounds)
    previewView.session = session
}

使用CKFPhotoSession类捕获图像,请使用以下代码:

session.capture({ (image, settings) in
    // TODO: Add your code here
}) { (error) in
    // TODO: Handle error
}

如果想要使用CKFVideoSession类录制视频,以下代码可以开始录制:

// You can also specify a custom url for where to save the video file
session.record(url: URL(string: ""), { (url) in
    // TODO: Add your code here
}) { (error) in
    // TODO: Handle error
}

然后结束录制:

// You can also specify a custom url for where to save the video file
session.stopRecording()

您可以通过isRecording属性来获取当前录制状态,以确定是否正在录制。

Session属性和方法

CKFPhotoSession CKFVideoSession
zoom: Double zoom: Double
resolution: CGSize isRecording: Bool
cameraPosition: CameraPosition cameraPosition: CameraPosition
cameraDetection: CameraDetection flashMode: FlashMode
flashMode: FlashMode start()
start() stop()
stop() togglePosition()
focus(at point: CGPoint) setWidth(_ width: Int, height: Int, frameRate: Int)
togglePosition() record(url: URL? = nil, _ callback: @escaping (URL) -> Void, error: @escaping (Error) -> Void)
capture(_ callback: @escaping (UIImage, AVCaptureResolvedPhotoSettings) -> Void, _ error: @escaping (Error) -> Void) stopRecording()

导入到Objective-C项目中

转到 项目设置编译设置总是嵌入Swift标准库 并将其值设置为

然后使用以下命令导入CameraKit框架

@import CameraKit;

创建自定义会话

CameraKit可以分为两个主要部分:预览和会话。会话是通过扩展基础CKFSession类实现的。如果您需要一个自定义会话,可以扩展CKFSession类并使用其静态辅助函数来初始化它。或者您也可以扩展内置的会话并添加自定义逻辑。

class MyCustomSession: CKFSession {

    public override init() {
        super.init()
        
        do {
            let deviceInput = try CKFSession.captureDeviceInput(type: .backCamera)
            self.session.addInput(deviceInput)
        } catch let error {
            print(error.localizedDescription)
        }
    }

    // TODO: Add your code here
}

许可协议

CameraKit遵循MIT许可协议发布。