CIDetector識(shí)別圖片(讀取圖片信息)探測(cè)器對(duì)象
@IBAction func photoBtnClick(sender: AnyObject) {
// 打開相冊(cè)
// 1.判斷是否能夠打開相冊(cè)
/*
case PhotoLibrary 相冊(cè)
case Camera 相機(jī)
case SavedPhotosAlbum 圖片庫
*/
if !UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.PhotoLibrary)
{
return
}
// 2.創(chuàng)建相冊(cè)控制器
let imagePickerVC = UIImagePickerController()
imagePickerVC.delegate = self
// 3.彈出相冊(cè)控制器
presentViewController(imagePickerVC, animated: true, completion: nil)
}
- CIDetector 探測(cè)器對(duì)象
extension QRCodeViewController: UINavigationControllerDelegate, UIImagePickerControllerDelegate
{
// 過時(shí)
// func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) {
//
// }
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
// NJLog(info)
// 1.取出選中的圖片
guard let image = info[UIImagePickerControllerOriginalImage] as? UIImage else
{
return
}
guard let ciImage = CIImage(image: image) else
{
return
}
// 2.從選中的圖片中讀取二維碼數(shù)據(jù)
// 2.1創(chuàng)建一個(gè)探測(cè)器對(duì)象,類型二維碼探測(cè)(還有人臉,text等)
//options:選項(xiàng)低像素和高像素,一個(gè)塊一個(gè)慢
let detector = CIDetector(ofType: CIDetectorTypeQRCode, context: nil, options: [CIDetectorAccuracy: CIDetectorAccuracyLow])
// 2.2利用探測(cè)器探測(cè)數(shù)據(jù)
let results = detector.featuresInImage(ciImage)
// 2.3取出探測(cè)到的數(shù)據(jù)
for result in results
{
NJLog((result as! CIQRCodeFeature).messageString)
}
// 注意: 如果實(shí)現(xiàn)了該方法, 當(dāng)選中一張圖片時(shí)系統(tǒng)就不會(huì)自動(dòng)關(guān)閉相冊(cè)控制器
picker.dismissViewControllerAnimated(true, completion: nil)
}
}