Swift简单实现URL生成二维码,并保存到本地相册
2016-09-06 16:54
423 查看
根据项目的需求,所以这里主要介绍一下由链接生成的二维码,长按二维码,截取二维码部分保存到本地相册中。
最初我想用
最后要注意的是,我在开始的时候,保存二维码,在本地相册中会同时保存两张,后来发现是长按方法执行了两次,所以进行了UIGestureRecognizerState的判断。
最初我想用
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的判断。
相关文章推荐
- ruby on Rails 从后台生成二维码并保存到本地,然后返回url
- iOS 高清二维码的生成,并保存到本地相册
- PHP实用篇:简单实现URL二维码生成
- java url生成二维码保存到本地
- swift - 简单的图片滤镜+保存view转成图片存入本地相册
- Easyui实现datagrid绑定JS本地对象(可不请求URL,不生成JSON)
- IOS下用Zbar实现摄像头扫描二维码和扫描本地相册二维码
- Java实现将文本内容、网址链接url,生成二维码与反解析
- iOS 生成带 logo 的二维码,区域截屏保存至相册(小功能二连发 (一))
- ios实现视频录制功能 三 获取视频、保存到相册、根据视频生成占位图片
- Swift 生成高清二维码 这个没有前景图片只是简单的生成普通的高清二维码
- 二维码保存本地及上传实现
- C#简单实现动态数据生成Word文档并保存
- 安卓实现二维码生成和扫描功能,扫描支持直接拍照扫码和相册图片扫码,还加了照明功能
- C#:简单实现动态数据生成Word文档并保存
- iOS开发-简单方法实现扒下网站html保存到本地文件
- Python 实现简单的爬虫功能并保存到本地
- Swift-贝赛尔曲线实现画图板 && 截图保存到相册中
- iOS swift实现图片不重复保存至相册
- Android实现保存图片到本地并在相册中显示