swift 3.0 xcode 8.1
須要在info.plist 添加 Privacy - Photo Library Usage Description YES
import UIKit
class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
let button = UIButton.init(type: UIButtonType.custom)
button.frame = CGRect.init(x: 20, y: 300, width: 300, height: 40)
button.setTitle("點擊獲取相冊二維碼圖片信息", for: UIControlState.normal)
button.setTitleColor(UIColor.black, for: UIControlState.normal)
button.addTarget(self, action: #selector(self.getImage), for: UIControlEvents.touchUpInside)
self.view.addSubview(button)
}
func getImage() {
let imagePickCST = UIImagePickerControllerSourceType.photoLibrary
let imagePickC = UIImagePickerController.init()
imagePickC.sourceType = imagePickCST
imagePickC.delegate = self
self.present(imagePickC, animated: true, completion: nil)
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
picker.dismiss(animated: true, completion: nil)
//獲取到的原始圖片
let image = info[UIImagePickerControllerOriginalImage]
let imageData = UIImagePNGRepresentation(image as! UIImage)
let ciImage = CIImage(data: imageData!)
//初始化一個檢測器
let detector = CIDetector(ofType: CIDetectorTypeQRCode, context: nil, options: [CIDetectorAccuracy:CIDetectorAccuracyLow])
//檢測到的結果數組
let array = detector?.features(in: ciImage!)
//取出數組中的第一個結果
if (array?.count)! > 0 {
let result: CIQRCodeFeature = array!.first as! CIQRCodeFeature
print(result.messageString!)
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}