iOS開發之二維碼掃描

iOS開發之二維碼掃描

在 iOS7 以前,在IOS中實現二維碼和條形碼掃描,我們所知的有,兩大開源組件 ZBar 與 ZXing,iOS7之后我們就可以使用SDK中的AVFoundation框架來處理二維碼的掃描。

關于AVFoundation

AVFoundation 是一個很大基礎庫,用來創建基于時間的視聽媒體,可以使用它來檢查,創建、編輯或媒體文件。也可以輸入流從設備和操作視頻實時捕捉和回放。與處理二維碼相關的有:


  • AVCaptureSession 管理輸入(AVCaptureInput)和輸出(AVCaptureOutput)流,包含開啟和停止會話方法。
  • AVCaptureDeviceInput 是AVCaptureInput的子類,可以作為輸入捕獲會話,用AVCaptureDevice實例初始化。
  • AVCaptureDevice 代表了物理捕獲設備如:攝像機。用于配置等底層硬件設置相機的自動對焦模式。
  • AVCaptureMetadataOutput 是AVCaptureOutput的子類,處理輸出捕獲會話。捕獲的對象傳遞給一個委托實現AVCaptureMetadataOutputObjectsDelegate協議。協議方法在指定的派發隊列(dispatch queue)上執行。
  • AVCaptureVideoPreviewLayerCALayer的一個子類,顯示捕獲到的相機輸出流。
    使用過程中注意事項:
  1. AVCaptureSession 可以設置 sessionPreset 屬性,這個決定了視頻輸入每一幀圖像質量的大小。
    • AVCaptureSessionPreset320x240
    • AVCaptureSessionPreset352x288
    • AVCaptureSessionPreset640x480
    • AVCaptureSessionPreset960x540
    • AVCaptureSessionPreset1280x720
    • AVCaptureSessionPreset1920x1080
      以上列舉了部分的屬性值,分別代表輸入圖片質量大小,一般來說AVCaptureSessionPreset640x480就夠使用,但是如果要保證較小的二維碼圖片能快速掃描,最好設置高些,如AVCaptureSessionPreset1920x1080(就是我們常說的1080p).
  2. 為了提高性能,可以在AVFoundation中設置 AVCaptureMetadataOutput 的 rectOfInterest 屬性來配置解析范圍。
    這個CGRect參數和普通的Rect范圍不太一樣,它的四個值的范圍都是0-1,表示比例。
    rectOfInterest都是按照橫屏來計算的 所以當豎屏的情況下 x軸和y軸要交換一下。
    寬度和高度設置的情況也是類似。
小結

代碼在這里

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容