спасибо, ты замечательный Догадаться. Наконец-то смог перейти к другим вещам. Благодаря тонну.
давно сталкиваюсь с этой проблемой, посмотрел здесь десятки ответов и не могу найти ничего, что могло бы помочь.
сценарийЯ создаю 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-коды , другой ответ не полностью связан.