2015-11-12 5 views
0

Я пытаюсь дать пользователю моего приложения возможность взять изображение из своей библиотеки и отсканировать QRCode от него. Вот соответствующий код:Core Image Detector (CIDetector) не обнаруживает QRCodes

Это функция, которая возвращается из Image Picker с выбранным изображением.

func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) { 
    let thisImage:CIImage? = CIImage(image: image) 
    let code = performQRCodeDetection(thisImage!) 

    self.dismissViewControllerAnimated(true, completion: nil) 

    self.performSegueWithIdentifier("goBackSegue", sender: code) 


} 

Внутри этой функции я называю эту функцию, чтобы сделать сканирование QRCode:

func performQRCodeDetection(image: CIImage) -> String { 
    var decode = "" 
    let options = [CIDetectorAccuracy: CIDetectorAccuracyHigh] 
    let detector = CIDetector(ofType: CIDetectorTypeQRCode, context: nil, options: options) 

    let features = detector.featuresInImage(image) 
    for feature in features as! [CIQRCodeFeature] { 
     decode = feature.messageString 
    } 
    return decode 
} 

переменных функции всегда возвращается пустой. У изображения определенно есть QRCode. Я взял изображение со всех ориентаций и размеров. Я не могу получить никаких результатов.

Любые мысли?

Спасибо!

+0

Вы пробовали свой код на изображении кода qr (например, https://en.wikipedia.org/wiki/File:Wikipedia_mobile_en.svg)? Вы работаете на iOS 8 и выше (не поддерживается в противном случае?) Наконец, я попытался найти пример, где контекст не ноль, но я не мог. Странно. –

+0

Кроме того, не пытайтесь использовать это в симуляторе. не всегда работает. (http://stackoverflow.com/a/30230136/5276890, https://forums.developer.apple.com/thread/20887) –

+0

Спасибо за ответ! Да, я тестирую на IPhone 6+ работает с IOS 8.4. Я пробовал изображения, которые я взял с QRCode, но я просто загрузил это изображение, которое вы связали, но не получило никаких результатов. –

ответ

0

проблема связана с качеством фотографии в фотоальбоме. , если вы поместите файл изображения qr из пакета, заменив «изображение», например .. [UIImage imageNamed: @ "foobar.png"], появится результат qr. Кстати, я пробовал фотографии, не повезло, чтобы это сработало.

Смежные вопросы