Swift3.1二维码的生成与扫描
2017-07-17 17:38
190 查看
简介
应用市场上,80%甚至更多的APP都有生成或者扫描二维码的功能。如:扫码登录、加好友及扫码支付等。
二维码本质上是一串二进制数据,我们可以在二维码中放入任何信息。如:分享的WiFi密码、QQ(微信)号、设备码及网址(PS:支付宝扫描二维码的原理就是将订单信息编程一个网址链接放入到二维码中,这样做的好处:如果是支付宝客户端扫描则能够立即支付,如果是其他客户端扫描,则其他客户端要是扫描的时候,设备中没有安装支付宝客户端,则可以跳转到支付宝网页版进行支付)等。
可以这么说:二维码的生成与扫描已可以算得上是APP开发的必备技能之一。
二维码的类型
主要有三类
黑白二维码
彩色二维码
带图片的二维码
二维码四大元素
二维码的内容
前景色
背景色
中间的图片
其中二维码的内容、前景色及背景色都是通过KVC赋值的,而中间的图片是用绘图上下文绘制上去的
主要代码
扫描待填坑
应用市场上,80%甚至更多的APP都有生成或者扫描二维码的功能。如:扫码登录、加好友及扫码支付等。
二维码本质上是一串二进制数据,我们可以在二维码中放入任何信息。如:分享的WiFi密码、QQ(微信)号、设备码及网址(PS:支付宝扫描二维码的原理就是将订单信息编程一个网址链接放入到二维码中,这样做的好处:如果是支付宝客户端扫描则能够立即支付,如果是其他客户端扫描,则其他客户端要是扫描的时候,设备中没有安装支付宝客户端,则可以跳转到支付宝网页版进行支付)等。
可以这么说:二维码的生成与扫描已可以算得上是APP开发的必备技能之一。
二维码的类型
主要有三类
黑白二维码
彩色二维码
带图片的二维码
二维码四大元素
二维码的内容
前景色
背景色
中间的图片
其中二维码的内容、前景色及背景色都是通过KVC赋值的,而中间的图片是用绘图上下文绘制上去的
主要代码
/// 生成二维码 func createQRcodeImage (qrString: String?, imageName: String?, foreColor: CIColor?, backColor: CIColor?) -> UIImage{ if let qrString = qrString { // 0、如果二维码内容为"",返回 if qrString.isEmpty { return UIImage() } //1、创建二维码过滤器并设置默认值 let qrCodeFilter = CIFilter(name: "CIQRCodeGenerator") qrCodeFilter?.setDefaults() //2、设置二维码的内容 qrCodeFilter?.setValue("二维码的内容".data(using: String.Encoding.utf8), forKey: "inputMessage") //3、从二维码过滤器中获取输出图片 let ciImage = qrCodeFilter?.outputImage //4、创建颜色过滤器并设置默认值 let colorFilter = CIFilter(name: "CIFalseColor") colorFilter?.setDefaults() //5、设置二维码图片的前景色跟背景色(常规的黑白二维码就是前景色为黑色,背景色为白色) colorFilter?.setValue(ciImage, forKey: "inputImage") colorFilter?.setValue(foreColor, forKey: "inputColor0") colorFilter?.setValue(backColor, forKey: "inputColor1") //6、在不失真的情况下放大图片 let uiImage = UIImage.init(ciImage: (colorFilter?.outputImage?.applying(CGAffineTransform(scaleX: 6, y: 6)))!) //7、输出图片 return self.drameImageWhitSourceImage(image: uiImage, centerImageName: imageName, centerImagewidth: 30, centerImageheight: 30) } return UIImage() } /// 二维码中心图片的绘制 func drameImageWhitSourceImage(image: UIImage?, centerImageName: String?, centerImagewidth: CGFloat? = 0, centerImageheight: CGFloat? = 0) -> UIImage { if let image = image { //1、开启绘图上下文(参数是绘制图片控件的大小) UIGraphicsBeginImageContext(image.size) //2、绘制大图 image.draw(in: CGRect(x: 0, y: 0, width: image.size.width, height: image.size.height)) //3、小图的位置、大小信息并绘制小图 let centerImageX = image.size.width / 2 - centerImagewidth! / 2 let centerImageY = image.size.height / 2 - centerImageheight! / 2 let image = UIImage.init(named: centerImageName!) image?.draw(in: CGRect(x: centerImageX, y: centerImageY, width: centerImagewidth!, height: centerImageheight!)) //4、从绘图上下文获取图片 let resultImage = UIGraphicsGetImageFromCurrentImageContext() //5、关闭上下文 UIGraphicsEndImageContext() //6、返回绘制好的图片 if let resultImage = resultImage { return resultImage } } return UIImage() }
扫描待填坑
相关文章推荐
- Swift之二维码的生成、识别和扫描
- swift生成二维码,扫描二维码
- Swift开发小技巧--扫描二维码,二维码的描边与锁定,设置扫描范围,二维码的生成(高清,无码,你懂得!)
- 二维码的生成 识别 扫描 封装(Swift)
- 扫描二维码+生成二维码
- 在android上实现二维码生成和扫描
- 二维码的生成与扫描
- Android使用zxing-android-embedded(由zxing开发)实现二维码生成和扫描
- 二维码生成扫描
- IOS笔记061之二维码的生成和扫描
- HTML5实现扫描识别二维码/生成二维码
- 使用zxing生成QRCode二维码,在Android的webview中调用条形码扫描(转)
- 二维码的生成与扫描
- ios二维码的生成与二维码图片的扫描
- android 二维码 helloworld (二维码的生成与扫描)
- ios 开发之 扫描二维码和生成二维码
- 生成二维码和扫描二维码
- iOS自带扫描和生成二维码
- android 使用开源库zxing生成二维码,扫描二维码
- Ionic3 生成项目及扫描二维码