gpt4 book ai didi

ios - 无法从生成的 QRCode 中获取信息

转载 作者:行者123 更新时间:2023-11-28 15:55:12 25 4
gpt4 key购买 nike

我正在尝试生成包含多个字符串的 QRCode。它正在工作,但是生成的图像 QRCode 在 imageView 中太小,因此无法读取它(至少我认为这就是为什么我无法从中获取信息的原因)。

它是这样的:

enter image description here

然后像这样生成它:

func generateQRWithInfo(){
var aggregateData = [String: NSData]()

if let firstName = firstName?.data(using: String.Encoding.isoLatin1, allowLossyConversion: false) {
aggregateData.updateValue(firstName as NSData, forKey: "firstName")

}

if let lastName = lastName?.data(using: String.Encoding.isoLatin1, allowLossyConversion: false) {
aggregateData.updateValue(lastName as NSData, forKey: "lastName")
}

if let job = job?.data(using: String.Encoding.isoLatin1, allowLossyConversion: false) {
aggregateData.updateValue(job as NSData, forKey: "job")
}

if let organization = organization?.data(using: String.Encoding.isoLatin1, allowLossyConversion: false) {
aggregateData.updateValue(organization as NSData, forKey: "organization")
}

if let mobilePhone = mobilePhone?.data(using: String.Encoding.isoLatin1, allowLossyConversion: false) {
aggregateData.updateValue(mobilePhone as NSData, forKey: "mobilePhone")
}

if let workPhone = workPhone?.data(using: String.Encoding.isoLatin1, allowLossyConversion: false) {
aggregateData.updateValue(workPhone as NSData, forKey: "workPhone")
}

if let email = email?.data(using: String.Encoding.isoLatin1, allowLossyConversion: false) {
aggregateData.updateValue(email as NSData, forKey: "email")
}

let archived = NSKeyedArchiver.archivedData(withRootObject: aggregateData)
let filter = CIFilter(name: "CIQRCodeGenerator")

filter?.setValue(archived, forKey: "inputMessage")
filter?.setValue("Q", forKey: "inputCorrectionLevel")

let qrCodeImage = filter?.outputImage
let context = CIContext(options: nil)
//let cgImage = context.createCGImage(qrCodeImage!, from: (qrCodeImage?.extent)!)

let transform = CGAffineTransform(scaleX: 50,y: 50)

let output = filter?.outputImage?.applying(transform)

let newImage = UIImage(ciImage: output!)

qrImageView.image = newImage
}

我不知道它是否应该如此,但我无法从中获取信息。我做错了什么?

最佳答案

QR 码根据这些参数保存大量数据。

  • 数据类型
  • 大小又名像素
  • 纠错级别

数据类型可以是数字、字母数字和二进制。根据丢失恢复的可能性,纠错级别可分为 L、M、Q 和 H 类。

所以根据您的情况,您想要生成 30*30 字母数字,所以显然您不能存储超过允许值的值。所以让它更大或减少数据。请注意,所有 QR 码阅读器都不相同。

有关更多信息,请查看此 table

关于ios - 无法从生成的 QRCode 中获取信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41877483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com