二维码的生成 Swift版本 (程序员直接上代码)
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
view.endEditing(true)
let str = inputTV.text ?? ""
// 1. 创建二维码滤镜
let filter = CIFilter(name: "CIQRCodeGenerator")
// 1.1 恢复滤镜默认设置
filter?.setDefaults()
// 2. 设置滤镜输入数据
// KVC
let data = str.dataUsingEncoding(NSUTF8StringEncoding)
filter?.setValue(data, forKey: "inputMessage")
// 2.2 设置二维码的纠错率
filter?.setValue("M", forKey: "inputCorrectionLevel")
// 3. 从二维码滤镜里面, 获取结果图片
var image = filter?.outputImage
// 借助这个方法, 处理成为一个高清图片
let transform = CGAffineTransformMakeScale(20, 20)
image = image?.imageByApplyingTransform(transform)
// 3.1 图片处理
// (23.0, 23.0)
var resultImage = UIImage(CIImage: image!)
print(resultImage.size)
// 前景图片
let center = UIImage(named: "erha.png")
resultImage = getNewImage(resultImage, center: center!)
// 4. 显示图片
qrCodeImageView.image = resultImage
}
// 保证图片放大清晰的方法
func getNewImage(sourceImage: UIImage, center: UIImage) -> UIImage {
let size = sourceImage.size
// 1. 开启图形上下文
UIGraphicsBeginImageContext(size)
// 2. 绘制大图片
sourceImage.drawInRect(CGRectMake(0, 0, size.width, size.height))
// 3. 绘制小图片
let width: CGFloat = 80
let height: CGFloat = 80
let x: CGFloat = (size.width - width) * 0.5
let y: CGFloat = (size.height - height) * 0.5
center.drawInRect(CGRectMake(x, y, width, height))
// 4. 取出结果图片
let resultImage = UIGraphicsGetImageFromCurrentImageContext()
// 5. 关闭上下文
UIGraphicsEndImageContext()
// 6. 返回结果
return resultImage
}