二维码和URL的相互转换
来源:互联网 发布:mac爱奇艺 编辑:程序博客网 时间:2024/05/16 18:46
用URL生成二维码,也可以通过二维码获取URL(可用于长按识别二维码)
#pragma mark - 二维码转换// url生成二维码+ (UIImage *)getQRCodeWithUrlString:(NSString *)urlStr size:(CGFloat)size{ // 1.创建过滤器 CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"]; // 2.恢复默认 [filter setDefaults]; // 3.给过滤器添加数据(正则表达式/账号和密码) NSData *data = [urlStr dataUsingEncoding:NSUTF8StringEncoding]; [filter setValue:data forKeyPath:@"inputMessage"]; // 4.获取输出的二维码 CIImage *outputImage = [filter outputImage]; // 5.将CIImage转换成UIImage,并放大显示 CGRect extent = CGRectIntegral(outputImage.extent); CGFloat scale = MIN(size/CGRectGetWidth(extent), size/CGRectGetHeight(extent)); // 5.1.创建bitmap size_t width = CGRectGetWidth(extent) * scale; size_t height = CGRectGetHeight(extent) * scale; CGColorSpaceRef cs = CGColorSpaceCreateDeviceGray(); CGContextRef bitmapRef = CGBitmapContextCreate(nil, width, height, 8, 0, cs, (CGBitmapInfo)kCGImageAlphaNone); CIContext *context = [CIContext contextWithOptions:nil]; CGImageRef bitmapImage = [context createCGImage:outputImage fromRect:extent]; CGContextSetInterpolationQuality(bitmapRef, kCGInterpolationNone); CGContextScaleCTM(bitmapRef, scale, scale); CGContextDrawImage(bitmapRef, extent, bitmapImage); // 5.2.保存bitmap到图片 CGImageRef scaledImage = CGBitmapContextCreateImage(bitmapRef); CGContextRelease(bitmapRef); CGImageRelease(bitmapImage); return [UIImage imageWithCGImage:scaledImage];}/** * 从照片中直接识别二维码 * @param myQRCode 二维码包含的内容 */- (void)readQRCodeFromImageWithmyQRCode:(void(^)(NSString *qrString,NSError *error))myQRCode{ if (!self) { myQRCode(nil,[NSError errorWithDomain:@"未传入图片" code:0 userInfo:nil]); return; } CIContext *context = [CIContext contextWithOptions:nil]; CIDetector *detector = [CIDetector detectorOfType:CIDetectorTypeQRCode context:context options:@{CIDetectorAccuracy:CIDetectorAccuracyHigh}]; CIImage *image = [CIImage imageWithCGImage:self.CGImage]; NSArray *features = [detector featuresInImage:image]; if (features.count) { CIQRCodeFeature *feature = [features firstObject]; NSString *result = feature.messageString; myQRCode(result,nil); } else { myQRCode(nil,[NSError errorWithDomain:@"未能识别出二维码" code:0 userInfo:nil]); return; }}
0 0
- 二维码和URL的相互转换
- 在url中%E4%BD%A0和汉字的相互转换
- 微博地址url(id)与mid的相互转换
- 微博地址url(id)与mid的相互转换
- 微博地址url(id)与mid的相互转换
- python中文与url编码之间的相互转换
- 二维码url的长度
- GDI和GDI+对象的相互转换
- CString 和 char * 的相互转换
- CString和int的相互转换
- GUID和字符串相互转换的函数
- CString和char*的相互转换
- RGB和HSL色彩的相互转换
- Cstring 和 DWORD的相互转换
- 文件和字节流的相互转换
- 文件和字节流的相互转换
- 文件和字节流的相互转换
- ascii和字符串的相互转换
- HDU1051 Wooden Sticks
- gl_FragCoord的xyzw
- 坐标移动
- Ubuntu无法登录mysql的解决方法——亲测有效
- leecode 解题总结:87. Scramble String
- 二维码和URL的相互转换
- PHP pdo单例模式连接数据库
- Android 网络通信架包优缺点使用情况的调研
- PHP解决base64_decode解密出现的乱码问题
- The server quit without updating PID file (/usr/local/mysql[失败]localhost.localdomain.pid).
- mysql 启动失败,数据恢复
- Java 基础(4)----Java数组详解
- mysql用root登录,执行revoke all privileges on *.* from root@'localhost'语句后无法执行DML语句解决办法
- 用Eclipse新版本新建servlet时候,发现创建Servlet后,Eclipse不会自动在web.xml中生成该Servlet对应的mapping信息,而是在Servlet代码中加入注解@Web