二维码---生成 swift

二维码---生成 swift,第1张

概述swift 3.0 Xcode 8.1 import UIKitclass ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let label = UILabel.init(frame: CGRect.init(x swift 3.0 Xcode 8.1
import UIKitclass VIEwController: UIVIEwController {    overrIDe func vIEwDIDLoad() {        super.vIEwDIDLoad()                let label = UILabel.init(frame: CGRect.init(x: 50,y: 100,wIDth: 200,height: 21))        label.text = "my name is Apple"        self.vIEw.addSubvIEw(label)                let imageVIEw = UIImageVIEw.init(frame: CGRect.init(x: 50,y: 200,wIDth: 300,height: 300))        imageVIEw.backgroundcolor = UIcolor.gray        self.vIEw.addSubvIEw(imageVIEw)                //添加二维码图片        imageVIEw.image = self.creatQRCodeImage(text: label.text!)    }    //MARK: -传进去字符串,生成二维码图片    func creatQRCodeImage(text: String) -> UIImage{                //创建滤镜        let filter = CIFilter(name: "CiqrCodeGenerator")        //还原滤镜的默认属性        filter?.setDefaults()        //设置需要生成二维码的数据        filter?.setValue(text.data(using: String.EnCoding.utf8),forKey: "inputMessage")        //从滤镜中取出生成的图片        let ciImage = filter?.outputimage        //把CIImage转成UIImage        //let bgImage = UIImage.init(ciImage: ciImage!) //这个清晰度不好        let bgImage = createNonInterpolatedUIImageFormCIImage(image: ciImage!,size: 300) //这个清晰度好        //创建一个头像        let icon = UIImage(named: "123.jpg")        //合成图片(把二维码和头像合并)        let newImage = creatimage(bgImage: bgImage,iconImage: icon!)        //返回生成好的二维码        return newImage    }        //MARK: - 根据CIImage生成指定大小的高清UIImage    func createNonInterpolatedUIImageFormCIImage(image: CIImage,size: CGfloat) -> UIImage {                //CIImage没有frame与bounds属性,只有extent属性        let cIExtent: CGRect = image.extent.integral        let scale: CGfloat = min(size/cIExtent.wIDth,size/cIExtent.height)                let context = CIContext(options: nil)  //创建基于GPU的CIContext对象,性能和效果更好        let bitmAPImage: CGImage = context.createCGImage(image,from: cIExtent)! //CIImage->CGImage                let wIDth = cIExtent.wIDth * scale        let height = cIExtent.height * scale        let cs: CGcolorSpace = CGcolorSpaceCreateDeviceGray() //灰度颜色通道        let info_UInt32 = CGImageAlphaInfo.none.rawValue                let bitmapRef = CGContext(data: nil,wIDth: Int(wIDth),height: Int(height),bitsPerComponent: 8,bytesPerRow: 0,space: cs,bitmAPInfo: info_UInt32)! //图形上下文,画布        bitmapRef.interpolationQuality = CGInterpolationQuality.none //写入质量        bitmapRef.scaleBy(x: scale,y: scale) //调整“画布”的缩放        bitmapRef.draw(bitmAPImage,in: cIExtent)  //绘制图片                let scaledImage: CGImage = bitmapRef.makeImage()! //保存        return UIImage(cgImage: scaledImage)    }        //MARK: - 根据背景图片和头像合成头像二维码    func creatimage(bgImage: UIImage,iconImage:UIImage) -> UIImage{                //开启图片上下文        UIGraphicsBeginImageContext(bgImage.size)        //绘制背景图片        bgImage.draw(in: CGRect(origin: CGPoint.zero,size: bgImage.size))        //绘制头像        let wIDth: CGfloat = 50        let height: CGfloat = wIDth        let x = (bgImage.size.wIDth - wIDth) * 0.5        let y = (bgImage.size.height - height) * 0.5        iconImage.draw(in: CGRect(x: x,y: y,wIDth: wIDth,height: height))        //取出绘制好的图片        let newImage = UIGraphicsGetimageFromCurrentimageContext()        //关闭上下文        UIGraphicsEndImageContext()        //返回合成好的图片        return newImage!    }        overrIDe func dIDReceiveMemoryWarning() {        super.dIDReceiveMemoryWarning()        // dispose of any resources that can be recreated.    }}
总结

以上是内存溢出为你收集整理的二维码---生成 swift全部内容,希望文章能够帮你解决二维码---生成 swift所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1069474.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存