//MARK: 初始化二维码扫描器
func initQRCodeScaner(){
// 获取 AVCaptureDevice 实例
_captureDevice = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)
// 初始化输入流
do{
try _inputStream = AVCaptureDeviceInput(device: _captureDevice!)
}catch{
print("初始化输入流 with device 失败")
}
if _inputStream == nil{
return
}
_ctr._isScaning = true
// 创建会话
_captureSession = AVCaptureSession()
_captureSession?.addInput(_inputStream)
// 初始化输出流
_captureMetadataOutput = AVCaptureMetadataOutput()
//设置区域
//CGRectMake(y的起点/屏幕的高,x的起点/屏幕的宽,扫描的区域的高/屏幕的高,扫描的区域的宽/屏幕的宽)
_captureMetadataOutput?.rectOfInterest = CGRect(x: _scanRect!.origin.y/kScreenHeight, y: _scanRect!.origin.x/kScreenWidth, width: _scanRect!.height / kScreenHeight, height: _scanRect!.width / kScreenWidth)
// 添加输出流
_captureSession?.addOutput(_captureMetadataOutput)
// 创建dispatch queue.
let dispatchQueue = dispatch_queue_create(kScanQRCodeQueueName, nil)
_captureMetadataOutput?.setMetadataObjectsDelegate(self, queue: dispatchQueue)
// 设置元数据类型 AVMetadataObjectTypeQRCode
let objArray = NSArray(objects: AVMetadataObjectTypeQRCode)
_captureMetadataOutput?.metadataObjectTypes = objArray as [AnyObject]
// 创建输出对象
_videoPreviewLayer = AVCaptureVideoPreviewLayer(session: _captureSession)
_videoPreviewLayer?.videoGravity = AVLayerVideoGravityResizeAspectFill
_videoPreviewLayer?.frame = self.view.bounds
self.view.layer.insertSublayer(_videoPreviewLayer!, atIndex: 0)
}
swift 二维码扫描
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 主要功能 使用CocoaPods. 安装 相关参数设置 注意要在.plist设置相机相关的权限 调用方法 在YLS...
- 前不久有网友跟我说,demo有bug不能运行,所以抽空改了一下,主要原因是swift版本问题,当初我写这个demo...
- 不知何时起,大众眼中的心理学领域被鸡汤占领。 《女人为什么没有安全感》心理学标签,结论是经济独立买买买。 《做内心...