二维码的生成(Swift)保证生成的图片清晰

二维码的生成 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



}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值