Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift CIQRCodeGenerator生成错误的图像_Swift_Qr Code_Cifilter - Fatal编程技术网

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。

我同意您的看法。但我想自由使用非整数比例,以生成毫米精度的任何大小的图像。在这种情况下,您在这里指出的行为是不可避免的,无论何时涉及非整数比例。您可以尝试使用更奇特的插值(双线性或双三次插值),但尽管它可能会导致更“均匀”的厚度,但在您的情况下可能会有其他问题;就是模糊。