【发布时间】:2017-07-02 22:20:08
【问题描述】:
我现在有一个非常简单的自定义二维码生成器。但是,我想做两件事。
- 更改二维码颜色
- 更改各个正方形的形状(例如圆角)
如果有人熟悉自定义 QR 码生成,如果您能提供帮助,我将非常高兴。下面是生成器函数的代码:
func generateQRCode() {
var urlString = Twitter.sharedInstance.firebaseDownloadLink?.absoluteString
if let rangeOfHTTPS = urlString?.range(of: "https://") {
urlString?.removeSubrange(rangeOfHTTPS)
}
guard var safeString = urlString else {
return
}
safeString = "https://www.twitter.com/card?"+safeString
log.info("encoded link: \(safeString)")
let data = safeString.data(using: String.Encoding.ascii)
if let filter = CIFilter(name: "CIQRCodeGenerator") {
filter.setValue(data, forKey: "inputMessage")
let transform = CGAffineTransform(scaleX: 3, y: 3)
if let output = filter.outputImage?.applying(transform) {
let qrCode = UIImage(ciImage: output)
//let rawImageRef: CGImage = qrCode.cgImage!
let colorMasking: [CGFloat] = [222, 255, 222, 255, 222, 255]
UIGraphicsBeginImageContext(qrCode.size)
var rawImageRef: CGImage = CIContext.init(options: nil).createCGImage(output, from: output.extent)!
let maskedImageRef = rawImageRef.copy(maskingColorComponents: colorMasking)
UIGraphicsGetCurrentContext()?.translateBy(x: 0.0, y: qrCode.size.height)
UIGraphicsGetCurrentContext()!.scaleBy(x: 1.0, y: -1.0)
UIGraphicsGetCurrentContext()?.draw(maskedImageRef!, in: CGRect(x: 0, y: 0, width: qrCode.size.width, height: qrCode.size.height))
let result = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
qrCodeView = UIImageView(image: result)
self.backgroundImage.addSubview(qrCodeView!)
qrCodeView!.frame = CGRect(x: 96, y: 125, width: 180, height: 180)
}
}
}
任何帮助将不胜感激。提前非常感谢!
干杯,西奥
【问题讨论】:
-
我曾经尝试过这种方法,但无法找到圆方格的方法。
-
@JonRose 似乎 twitter 已经在他们的应用程序中本地完成了它,因为他们没有列出他们使用 API ......一定是一种方式,对吧?
标签: ios iphone swift xcode core-image