Swift CIQRCodeGenerator生成错误的图像
使用以下简单代码生成二维码时存在问题:Swift CIQRCodeGenerator生成错误的图像,swift,qr-code,cifilter,Swift,Qr Code,Cifilter,使用以下简单代码生成二维码时存在问题: override func viewDidLoad() { super.viewDidLoad() let image = generateQRCode(from: "Hacking with Swift is the best iOS coding tutorial I've ever read!") imageView.image = image } func generateQRCode(fro
override func viewDidLoad() {
super.viewDidLoad()
let image = generateQRCode(from: "Hacking with Swift is the best iOS coding tutorial I've ever read!")
imageView.image = image
}
func generateQRCode(from string: String) -> UIImage? {
let data = string.data(using: String.Encoding.ascii)
if let filter = CIFilter(name: "CIQRCodeGenerator") {
filter.setValue(data, forKey: "inputMessage")
let transform = CGAffineTransform(scaleX: 5.3, y: 5.3)
if let output = filter.outputImage?.transformed(by: transform) {
return UIImage(ciImage: output)
}
}
return nil
}
此代码生成以下图像:
但当放大任何角标记时,我们可以看到边界厚度的差异:
即。并非每个比例值都能生成正确的最终图像。如何解决问题?无论何时使用非整数刻度(如5.3),都会出现预期的行为。如果您关心的是保持一致的标记宽度,请仅使用整数刻度,例如5或6。我同意您的看法。但我想自由使用非整数比例,以生成毫米精度的任何大小的图像。在这种情况下,您在这里指出的行为是不可避免的,无论何时涉及非整数比例。您可以尝试使用更奇特的插值(双线性或双三次插值),但尽管它可能会导致更“均匀”的厚度,但在您的情况下可能会有其他问题;就是模糊。