[swift学习之十二]二维码创建练习

import UIKit

extension CGFloat{
    func ToInt() -> Int {
        return Int(self)
    }
}

extension CIImage{
    func ToUiImag(ASize: CGFloat) -> UIImage {
        let extent = CGRectIntegral(self.extent)
        let scale = min(ASize/CGRectGetWidth(extent), ASize/CGRectGetHeight(extent))
        let W = (CGRectGetWidth(extent) * scale).ToInt()
        let H = (CGRectGetHeight(extent) * scale).ToInt()
        let cs = CGColorSpaceCreateDeviceGray()
        let bitMapRef = CGBitmapContextCreate(nil, W, H, 8, 0, cs,0)
        let context = CIContext(options: nil)
        let bitMapImage = context.createCGImage(self, fromRect: extent)
        CGContextSetInterpolationQuality(bitMapRef, .None)
        CGContextScaleCTM(bitMapRef, scale, scale)
        CGContextDrawImage(bitMapRef, extent, bitMapImage)
        
        let scaledImag = CGBitmapContextCreateImage(bitMapRef)
        return UIImage(CGImage: scaledImag!)
    }
}

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let filter = CIFilter(name: "CIQRCodeGenerator")
        filter?.setDefaults()
        let str = "我是小宝贝,从不怕累,虽然功课一大堆。像个小baby,最爱馋嘴,还要吃奶嘴,哈哈"
        let data = str.dataUsingEncoding(NSUTF8StringEncoding)
        filter?.setValue(data, forKey: "inputMessage")
        let img = filter?.outputImage
        let imgView = self.view.viewWithTag(1) as? UIImageView
        imgView?.image = img?.ToUiImag((imgView?.frame.width)!)
        
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

代码从始至终都没看懂啊,只能说是翻译了一下。人家写的怎么就这么牛呢?~~~

参考:http://www.jianshu.com/p/d1675f536151


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值