2017-12-14 2 views
0
func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [Any]!, from connection: AVCaptureConnection!) { 
    captureSession.stopRunning() 

    if let metadataObject = metadataObjects.first { 
     let readableObject = metadataObject as! AVMetadataMachineReadableCodeObject; 

     AudioServicesPlaySystemSound(SystemSoundID(kSystemSoundID_Vibrate)) 
     found(code: readableObject.stringValue!); 
    } 
} 

위의 기능은 완벽하게 작동하지만 스캔 된 결과를 얻고 장치의 사진으로 쓰려고했지만 지금은 불가능한 것처럼 보입니다.스위프트 3로 스캔 바코드 사진을 얻는 방법은 무엇입니까?

답변

0

그 방법은 CoreImage입니다. readableObject.stringValue을 얻으면 CICode128BarcodeGenerator 필터로 이미지를 생성합니다.

따라서, 귀하의 예제에서 :

func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [Any]!, from connection: AVCaptureConnection!) { 
    captureSession.stopRunning() 

    if let metadataObject = metadataObjects.first { 
     let readableObject = metadataObject as! AVMetadataMachineReadableCodeObject; 

     let barcodeFilter = CIFilter(name: "CICode128BarcodeGenerator") 
     barcodeFilter?.setValue(readableObject.stringValue!.data(using: .ascii), forKey: "inputMessage") 

     let image = UIImage(ciImage: (barcodeFilter?.outputImage)!) 

     AudioServicesPlaySystemSound(SystemSoundID(kSystemSoundID_Vibrate)) 
     found(code: readableObject.stringValue!); 
    } 
} 

는 파일의 시작 부분에 import CoreImage해야합니다.

+0

할 수있는 방법이 있습니까? 카메라에서 스캔 한 이미지를 저장해도됩니까? – Totally

+0

무슨 뜻인지 이해가 안됩니다. 그림에서 바코드 문자열을 가져 오시겠습니까? 또는 이미지의 일부를 저장 하시겠습니까? – barbarity

+0

스캔 한 바코드 이미지의 일부분을 저장하고 싶습니다. – Totally

관련 문제