iOS 7+,使用原生API生成QRCode。
来源:互联网 发布:如何删除mac系统 编辑:程序博客网 时间:2024/06/05 03:43
iOS 7之后,可以通过原生API生成QRCode。
- (UIImage *)private_generateQRCodeImageWithContent:(NSString *)content { // 生成二维码 CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"]; if (!filter) return nil; NSData *data = [content dataUsingEncoding:NSUTF8StringEncoding]; [filter setValue:data forKey:@"inputMessage"]; [filter setValue:@"H" forKey:@"inputCorrectionLevel"]; CIImage *qrCode = [filter outputImage]; // 生成的二维码比较小,需要重新绘制 CGRect CIImageRect = CGRectIntegral(qrCode.extent); CGFloat qrSizeToDraw = YBTRate * QRCodeWidth; CGFloat scale = MIN(qrSizeToDraw / CGRectGetWidth(CIImageRect), qrSizeToDraw / CGRectGetHeight(CIImageRect)); size_t width = CGRectGetWidth(CIImageRect) * scale; size_t height = CGRectGetHeight(CIImageRect) * scale; CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray(); CGContextRef bitmap = CGBitmapContextCreate(nil, width, height, 8, 0, colorSpace, (CGBitmapInfo)kCGImageAlphaNone); CIContext * context = [CIContext contextWithOptions:@{kCIContextUseSoftwareRenderer : @(NO)}]; CGImageRef bitmapImage = [context createCGImage:qrCode fromRect:CIImageRect]; CGContextSetInterpolationQuality(bitmap, kCGInterpolationNone); CGContextScaleCTM(bitmap, scale, scale); CGContextDrawImage(bitmap, CIImageRect, bitmapImage); CGImageRef scaledImage = CGBitmapContextCreateImage(bitmap); CGColorSpaceRelease(colorSpace); CGContextRelease(bitmap); CGImageRelease(bitmapImage); UIImage * afterDrawingImage = [UIImage imageWithCGImage:scaledImage]; // 绘制水印 UIGraphicsBeginImageContext(afterDrawingImage.size); [afterDrawingImage drawInRect:(CGRect){CGPointZero, afterDrawingImage.size}]; UIImage * logoImage = [UIImage imageNamed:@"二维码logo"]; // 水印图片 [logoImage drawInRect:CGRectMake((afterDrawingImage.size.width - logoImage.size.width)/2, (afterDrawingImage.size.height - logoImage.size.height)/2, logoImage.size.width, logoImage.size.height)]; // 居中绘制 UIImage * QRCodeImageWithLogo = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return QRCodeImageWithLogo;}
阅读全文
0 0
- iOS 7+,使用原生API生成QRCode。
- iOS原生API生成二维码(CIFilter)
- 使用QRCode生成二维码
- 使用QRCode生成二维码
- 使用qrcode生成二维码
- 使用QRCode生成二维码
- 使用QRCode生成二维码
- 使用QrCode生成二维码
- 使用qrcode生成二维码
- 使用jquery.qrcode生成二维码
- 使用jquery.qrcode生成二维码
- 使用jquery.qrcode生成二维码
- 使用jquery.qrcode生成二维码
- 使用jquery-qrcode生成二维码
- 使用jquery.qrcode生成二维码
- 使用jquery-qrcode生成二维码
- Python使用QRCode生成二维码
- 使用jquery.qrcode生成二维码
- 算法总结
- C/C++,windows 和 linux 获取目录下文件列表的方法
- 显示和隐式的Intent 跳转界面
- UML用例图之寻找参与者与用例
- 机器学习中的范数
- iOS 7+,使用原生API生成QRCode。
- Android Studio json 数据
- SpringMVC+Hibernate+jQuery+js+css+jsp+nginx整合时,(1)jsp引入js,css无效;(2)插入数据库时某字段为空;(3)web.xml配置完后,从数据库读数
- 数据预处理之缺失值、异常值处理
- 合并多个网络请求rxjava
- python学习—Day18—异常
- java web工程解决跨域
- AndroidStudio3.0 下载使用新功能介绍
- Numpy学习(进阶)