Swift Avfoundation: ошибка сканирования QRcode в bright ambient

Я использую пример отсюда для создания приложений сканирования qrcode, и он прекрасно работает для бумаги или обычного света

в нормальном состоянии qrcode выглядит как ниже:
(линия толще, и эти точки прилипают друг к другу)Введите описание изображения здесь

Моя проблема: когда окружающая среда яркая, и телефон яркий (особенно с retina-дисплеем, как SamsungEdge 7), qrcode сканируется, как показано ниже. Невозможно читать qrcode больше!
(линия становится тоньше, а точки становятся меньше и дальше друг от друга)Введите описание изображения здесь

любое предложение или где / как я могу исправить эту ошибку? потому что ZXING позволяет сканировать даже в моем сценарии «ошибка».

Заранее спасибо!

1 ответ

  1. После спрашивать и искать вокруг. (полезная информация: https://www.objc.io/issues/21-camera-and-photos/camera-capture-on-ios/)

    Эта проблема связана с экспозицией камеры, яркостью, контрастностью, коэффициентами баланса белого.

    это то, что я добавляю, чтобы решить эту проблему

    //zoom + set exposure for bright senario 
        do {
            try currentDevice.lockForConfiguration()
        } catch {
            // handle error
            return
        }
        currentDevice.videoZoomFactor = 1.0 + CGFloat(1)
        let exposureBias:Float = -0.5
        currentDevice.setExposureTargetBias(exposureBias) { (time:CMTime) -> Void in
        }
        currentDevice.unlockForConfiguration()