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