Swift简单实现URL生成二维码,并保存到本地相册
来源:互联网 发布:通过网线共享网络 编辑:程序博客网 时间:2024/05/21 07:58
根据项目的需求,所以这里主要介绍一下由链接生成的二维码,长按二维码,截取二维码部分保存到本地相册中。
最初我想用UIImageWriteToSavedPhotosAlbum
方法直接把生成的二维码存入相册中,但是发现保存失败,感觉应该是类型问题出的错,所以我用了截屏的方法。
override func viewWillAppear(animated: Bool) { qrCodeImageView.image = createQRForString(url,qrImageName: "QRCoreImage") } //创建二维码图片 func createQRForString(qrString: String?, qrImageName: String?) -> UIImage?{ let stringData = sureQRString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) // 创建一个二维码的滤镜 let qrFilter = CIFilter(name: "CIQRCodeGenerator")! qrFilter.setValue(stringData, forKey: "inputMessage") qrFilter.setValue("H", forKey: "inputCorrectionLevel") let qrCIImage = qrFilter.outputImage // 创建一个颜色滤镜,黑白色 let colorFilter = CIFilter(name: "CIFalseColor")! colorFilter.setDefaults() colorFilter.setValue(qrCIImage, forKey: "inputImage") colorFilter.setValue(CIColor(red: 0, green: 0, blue: 0), forKey: "inputColor0") colorFilter.setValue(CIColor(red: 1, green: 1, blue: 1), forKey: "inputColor1") // 返回二维码image let codeImage = UIImage(CIImage: colorFilter.outputImage! // 下面是将头像之类的图片放到二维码中 // if let iconImage = UIImage(named: qrImageName!) { // let rect = CGRectMake(0, 0, codeImage.size.width, codeImage.size.height) // UIGraphicsBeginImageContext(rect.size) // // codeImage.drawInRect(rect) // let avatarSize = CGSizeMake(rect.size.width * 0.25, rect.size.height * 0.25) // let x = (rect.width - avatarSize.width) * 0.5 // let y = (rect.height - avatarSize.height) * 0.5 // iconImage.drawInRect(CGRectMake(x, y, avatarSize.width, avatarSize.height)) // let resultImage = UIGraphicsGetImageFromCurrentImageContext() // // UIGraphicsEndImageContext() // return resultImage // } return codeImage } return nil } override func viewDidLoad() { super.viewDidLoad() //添加长按事件 let upKeyGesture = UILongPressGestureRecognizer() upKeyGesture.addTarget(self, action: "qrCodeButtonClicked:") qrCodeButton.addGestureRecognizer(upKeyGesture) } //长按事件 func qrCodeButtonClicked(sender: UILongPressGestureRecognizer) { if sender.state == UIGestureRecognizerState.Began{ // 开始截取二维码部分(设置截取大小) UIGraphicsBeginImageContext(qrCodeImageView.bounds.size) // 获得截取到的图像 let img : UIImage = UIGraphicsGetImageFromCurrentImageContext() // 结束截取 UIGraphicsEndImageContext() //将图片保存到本地 UIImageWriteToSavedPhotosAlbum(img, self, "image:didFinishSavingWithError:contextInfo:", nil) }else if sender.state == UIGestureRecognizerState.Ended{ return } } func image(image:UIImage,didFinishSavingWithError error:NSError?,contextInfo:AnyObject) { if error != nil { UIhelper.showToast("保存失败", view: self.view) } else { UIhelper.showToast("保存成功", view: self.view) } }
最后要注意的是,我在开始的时候,保存二维码,在本地相册中会同时保存两张,后来发现是长按方法执行了两次,所以进行了UIGestureRecognizerState的判断。
0 0
- Swift简单实现URL生成二维码,并保存到本地相册
- iOS 高清二维码的生成,并保存到本地相册
- ruby on Rails 从后台生成二维码并保存到本地,然后返回url
- 生成二维码保存本地,并更新到图册
- Python 实现简单的爬虫功能并保存到本地
- 基于Android实现保存图片到本地并可以在相册中显示出来
- Android实现保存图片到本地并在相册中显示
- 生成并保存二维码
- 拍照并保存到本地相册中 ios
- 保存图片到本地,并及时在系统相册更新
- IOS-UIView转UIImage并保存到本地相册
- 保存图片到本地相册并即时刷新
- Glide加载图片并保存到本地相册
- 通过网络Url下载图片并下载到本地相册
- 图片保存到本地相册
- 保存图片到本地相册
- 保存图片到本地相册
- 保存图片到本地相册
- 张正友相机标定文章:A Flexible New Technique for Camera Calibration
- eclipse安装svn插件
- Android学习之路------github上的常用Android特效
- prim算法+优化 模版
- Reconstruct Itinerary
- Swift简单实现URL生成二维码,并保存到本地相册
- 约瑟夫问题
- MQ--为什么使用它?
- 剑指Offer:二叉树的镜像
- lightoj 1214 - Large Division 大数对小数取余
- eclipse neno中tomcat配置servers locations地址的文件
- When I delete a java project containing 200.000 code from eclipse,there is a prolem : An unexpected
- JavaScript整理篇
- spark的组件