iOS二维码的生成和扫描
发布时间 - 2026-01-10 23:21:35 点击率:次本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下

属性
@property (strong,nonatomic)AVCaptureDevice * device; @property (strong,nonatomic)AVCaptureDeviceInput * input; @property (strong,nonatomic)AVCaptureMetadataOutput * output; @property (strong,nonatomic)AVCaptureSession * session; @property (strong,nonatomic)AVCaptureVideoPreviewLayer * layer; @property (nonatomic, strong)UIImageView *imageView;
二维码的生成
// 1.创建过滤器 CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"]; // 2.恢复默认 [filter setDefaults]; // 3.给过滤器添加数据(正则表达式/账号和密码) NSString *dataString = @"http://www.520it.com"; NSData *data = [dataString dataUsingEncoding:NSUTF8StringEncoding]; [filter setValue:data forKeyPath:@"inputMessage"]; // 4.获取输出的二维码 CIImage *outputImage = [filter outputImage]; //因为生成的二维码模糊,所以通过createNonInterpolatedUIImageFormCIImage:outputImage来获得高清的二维码图片 // 5.显示二维码 self.imageView.image = [self createNonInterpolatedUIImageFormCIImage:outputImage withSize:200];
* createNonInterpolatedUIImageFormCIImage:outputImage方法的实现
/**
* 根据CIImage生成指定大小的UIImage
*
* @param image CIImage
* @param size 图片宽度
*/
- (UIImage *)createNonInterpolatedUIImageFormCIImage:(CIImage *)image withSize:(CGFloat) size
{
CGRect extent = CGRectIntegral(image.extent);
CGFloat scale = MIN(size/CGRectGetWidth(extent), size/CGRectGetHeight(extent));
// 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:image fromRect:extent];
CGContextSetInterpolationQuality(bitmapRef, kCGInterpolationNone);
CGContextScaleCTM(bitmapRef, scale, scale);
CGContextDrawImage(bitmapRef, extent, bitmapImage);
// 2.保存bitmap到图片
CGImageRef scaledImage = CGBitmapContextCreateImage(bitmapRef);
CGContextRelease(bitmapRef);
CGImageRelease(bitmapImage);
return [UIImage imageWithCGImage:scaledImage];
}
二维码的扫描
// 1.创建捕捉会话 AVCaptureSession *session = [[AVCaptureSession alloc] init]; self.session = session; // 2.添加输入设备(数据从摄像头输入) AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil]; [session addInput:input]; // 3.添加输出数据(示例对象-->类对象-->元类对象-->根元类对象) AVCaptureMetadataOutput *output = [[AVCaptureMetadataOutput alloc] init]; [output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()]; [session addOutput:output]; // 3.1.设置输入元数据的类型(类型是二维码数据) [output setMetadataObjectTypes:@[AVMetadataObjectTypeQRCode]]; // 4.添加扫描图层 AVCaptureVideoPreviewLayer *layer = [AVCaptureVideoPreviewLayer layerWithSession:session]; layer.frame = self.view.bounds; [self.view.layer addSublayer:layer]; self.layer = layer; // 5.开始扫描 [session startRunning];
*扫描到结果后会调用的方法
// 当扫描到数据时就会执行该方法
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection
{
if (metadataObjects.count > 0) {
//获得扫描数据,最后一个时最新扫描的数据
AVMetadataMachineReadableCodeObject *object = [metadataObjects lastObject];
NSLog(@"%@", object.stringValue);
// 停止扫描
[self.session stopRunning];
// 将预览图层移除
[self.layer removeFromSuperlayer];
} else {
NSLog(@"没有扫描到数据");
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# iOS二维码生成
# iOS二维码扫描
# iOS二维码
# iOS开发生成二维码图片(附中间带有小图标二维码)
# iOS二维码的生成代码
# ios swift3.0实现二维码扫描、生成、识别示例代码
# iOS中生成指定大小、指定颜色的二维码和条形码方法详解
# iOS 二维码生成及扫码详解及实例代码
# IOS生成与读取二维码名片
# IOS笔记061之二维码的生成和扫描
# iOS使用CIFilter生成二维码
# 图层
# 时就
# 后会
# 大家分享
# 具体内容
# 大家多多
# 移除
# 九宫格
# 正则表达式
# CIImage
# inputMessage
# outputImage
# 高清
# createNonInterpolatedUIImageFormCIImage
# forKeyPath
# NSData
# www
# data
# setValue
# NSUTF8StringEncoding
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
教学论文网站制作软件有哪些,写论文用什么软件
?
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
lovemo网页版地址 lovemo官网手机登录
bing浏览器学术搜索入口_bing学术文献检索地址
Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】
详解jQuery停止动画——stop()方法的使用
制作电商网页,电商供应链怎么做?
Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践
如何在万网开始建站?分步指南解析
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
高端建站如何打造兼具美学与转化的品牌官网?
WEB开发之注册页面验证码倒计时代码的实现
Laravel distinct去重查询_Laravel Eloquent去重方法
如何在建站之星绑定自定义域名?
青岛网站建设如何选择本地服务器?
如何正确选择百度移动适配建站域名?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧
Laravel模型关联查询教程_Laravel Eloquent一对多关联写法
Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】
音乐网站服务器如何优化API响应速度?
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
bootstrap日历插件datetimepicker使用方法
Laravel集合Collection怎么用_Laravel集合常用函数详解
Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】
Java垃圾回收器的方法和原理总结
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
如何快速启动建站代理加盟业务?
如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环
Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤
Python制作简易注册登录系统
Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制
如何在腾讯云服务器快速搭建个人网站?
潮流网站制作头像软件下载,适合母子的网名有哪些?
Linux后台任务运行方法_nohup与&使用技巧【技巧】
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
郑州企业网站制作公司,郑州招聘网站有哪些?
千库网官网入口推荐 千库网设计创意平台入口
Laravel Session怎么存储_Laravel Session驱动配置详解
Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】
JavaScript如何操作视频_媒体API怎么控制播放
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
JavaScript如何实现倒计时_时间函数如何精确控制
Laravel如何使用Telescope进行调试?(安装和使用教程)
大连网站制作公司哪家好一点,大连买房网站哪个好?
java ZXing生成二维码及条码实例分享
如何在建站之星网店版论坛获取技术支持?
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
如何在阿里云虚拟主机上快速搭建个人网站?

