спасибо, ты замечательный Догадаться. Наконец-то смог перейти к другим вещам. Благодаря тонну.

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

сценарий

Я создаю QR-код на iOS-стороне своего приложения и хочу, чтобы этот QR-код был отправлен на расширение WatchKit, которое я сейчас разрабатываю.

Как я генерирую QR-код
func createQR(with string: String) {

    if let filter = CIFilter(name: "CIQRCodeGenerator") {

        //set the data to the contact data
        filter.setValue(string, forKey: "inputMessage")
        filter.setValue("L", forKey: "inputCorrectionLevel")

        if let codeImage = filter.outputImage {
            return UIImage(ciImage: codeImage);
        }
    }
}
Что я хочу дальше

Я хочу получить данные из изображения QR, чтобы отправить их в приложение Apple Watch, например:

let data = UIImagePNGRepresentation(QRCodeImage);

Но, Это всегда возвращаетсяnil потому что нет данных изображения, поддерживающих вывод из фильтра.

Примечание: Я знаю, что нет никаких данных, связанных с изображением CI, потому что оно не было обработано и даже не имеет данных, связанных с ним, потому что это просто вывод из фильтра.Я не знаю как обойти это потому что я довольно новичок в обработке изображений и тому подобное. : /

Что я пробовалСозданиеcgImage изfilter.outputImage
func createQR(with string: String) {
    if let filter = CIFilter(name: "CIQRCodeGenerator") {

        //set the data to the contact data
        filter.setValue(contactData, forKey: "inputMessage")
        filter.setValue("L", forKey: "inputCorrectionLevel")

        if let codeImage = filter.outputImage {
            let context = CIContext(options: nil)
            if let cgImage = context.createCGImage(codeImage, from: codeImage.extent) {
                self.QRCode = UIImage(cgImage: cgImage)
            }
        }
    }
}

Но это не работает, кажется, потому что изображение на виде пустое.

Создание пустого CIImage в качестве входного изображения
func update(with string: String) {
    let blankCiImage = CIImage(color: .white) //This probably isn't right...
    if let filter = CIFilter(name: "CIQRCodeGenerator") {

        filter.setValue(contactData, forKey: "inputMessage")
        filter.setValue("L", forKey: "inputCorrectionLevel")
        filter.setValue(blankCiImage, forKey: kCIInputImageKey)

        if let codeImage = filter.outputImage {
            let context = CIContext(options: nil)
            if let cgImage = context.createCGImage(codeImage, from: codeImage.extent) {
                self.contactCode = UIImage(cgImage: cgImage)
                print(self.contactCode!)
                print(UIImagePNGRepresentation(self.contactCode!))
            }
        }
    }
}

Это тоже не работает - я думал добавить пустое изображение к нему, а затем сделать фильтр поверх него, но я, вероятно, не делаю это правильно.

Моя цель

Буквально, простополучить данные из сгенерированного QR-кода, Большинство тем предлагаютUIImage(ciImage: output) , но это не имеет никаких данных поддержки.

Если бы кто-нибудь мог помочь мне с этим, это было бы здорово. И любое объяснение того, как это работает, тоже было бы замечательно.

Редактировать: Я не верю, что это то же самое, что помеченный дубликат - помеченный дубликат предназначен для редактирования существующего изображения с использованием фильтров CI и получения этих данных, а также для изображения, которое создается исключительно с помощью фильтра CI без входного изображения - QR-коды , другой ответ не полностью связан.

Ответы на вопрос(1)

Ваш ответ на вопрос