iOS Swift, как воссоздать штрих-код Изображение после сканирования - PullRequest
0 голосов
/ 04 июня 2019

Нам было предложено приложение для iOS, которое распознает штрих-коды (возможными типами являются code128, code93, code39) , и после обнаружения нам необходимо воссоздать изображение и показать штрих-код на главном экране. Для обнаружения штрих-кода мы используем AVCaptureSession framework, для генерации изображения мы используем CoreImage.

Я могу определить строковые значения штрих-кодов, но получаю ноль при попытке получить поле CIBarcodeDescriptor, поэтому я не могу передать эту информацию в раздел CoreImage.

Вот мой код

Обнаружение делегата штрих-кода

public func scannerDelegate(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject],from connection: AVCaptureConnection){

    if let metadataObject = metadataObjects.first{

        guard let readableObject = metadataObject as? AVMetadataMachineReadableCodeObject else{
            return
        }
        //barcode String id
        guard let barcodeStringValue = readableObject.stringValue else{
            return
        }

        //readableObject.descriptor
        guard let descriptor = readableObject.descriptor else{
            return
        }
         //Pass parameters to the caller and stop Capture Session
    }
}

Для создания изображения штрих-кода

    let filterName = descriptor.rawValue
    guard let data = barcodeStringValue.data(using: .ascii),
      let filter = CIFilter(name: filterName) else {
            return nil
    }

    filter.setValue(data, forKey: "inputMessage")

    guard let image = filter.outputImage else {
        return nil
    }

Так что я не могу передать параметр filterName в классе CIFilter, я протестировал это решение для QRCode, и оно отлично работает. Можно ли добиться того же результата со штрих-кодами? Или я должен использовать внешнюю библиотеку, чтобы сделать работу?

...