长按图片识别图中二维码:

  1. // 长按图片识别二维码
  2.  
  3. UILongPressGestureRecognizer *QrCodeTap = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(QrCodeClick:)];
  4.  
  5. [self.view addGestureRecognizer:QrCodeTap];
  6.  
  7. - (void)QrCodeClick:(UILongPressGestureRecognizer *)pressSender {
  8.  
  9. if (pressSender.state != UIGestureRecognizerStateBegan) {
  10.  
  11. return;//长按手势只会响应一次
  12.  
  13. }
  14.  
  15. // MJPhoto *photo = _photos[_currentPhotoIndex];
  16.  
  17. //截图 再读取
  18.  
  19. //第一个参数表示区域大小。第二个参数表示是否是非透明的。如果需要显示半透明效果,需要传NO,否则传YES。第三个参数就是屏幕密度了,获取当前屏幕分辨率[UIScreen mainScreen].scale
  20.  
  21. UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, YES, 2.2);
  22.  
  23. CGContextRef context = UIGraphicsGetCurrentContext();
  24.  
  25. [self.view.layer renderInContext:context];
  26.  
  27. UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
  28.  
  29. UIGraphicsEndImageContext();
  30.  
  31. CIImage *ciImage = [[CIImage alloc] initWithCGImage:image.CGImage options:nil];
  32.  
  33. CIContext *ciContext = [CIContext contextWithOptions:@{kCIContextUseSoftwareRenderer : @(YES)}]; // 软件渲染
  34.  
  35. CIDetector *detector = [CIDetector detectorOfType:CIDetectorTypeQRCode context:ciContext options:@{CIDetectorAccuracy : CIDetectorAccuracyHigh}];// 二维码识别
  36.  
  37. NSArray *features = [detector featuresInImage:ciImage];
  38.  
  39. if (features.count) {
  40.  
  41. for (CIQRCodeFeature *feature in features) {
  42.  
  43. NSLog(@"qrCodeUrl = %@",feature.messageString); // 打印二维码中的信息
  44.  
  45. qrCodeUrl = feature.messageString;
  46.  
  47. }
  48.  
  49. // 初始化弹框 第一个参数是设置距离底部的边距
  50.  
  51. alertview = [[RomAlertView alloc] initWithMainAlertViewBottomInset: Title:nil detailText:nil cancelTitle:nil otherTitles:[NSMutableArray arrayWithObjects:@"保存图片",@"识别图中二维码",nil]];
  52.  
  53. alertview.tag = ;
  54.  
  55. // 设置弹框的样式
  56.  
  57. alertview.RomMode = RomAlertViewModeBottomTableView;
  58.  
  59. // 设置弹框从什么位置进入 当然也可以设置什么位置退出
  60.  
  61. [alertview setEnterMode:RomAlertEnterModeBottom];
  62.  
  63. // 设置代理
  64.  
  65. [alertview setDelegate:self];
  66.  
  67. // 显示 必须调用 和系统一样
  68.  
  69. [alertview show];
  70.  
  71. } else {
  72.  
  73. NSLog(@"图片中没有二维码");
  74.  
  75. }
  76.  
  77. }
  78.  
  79. #pragma mark -- RomAlertViewDelegate 弹框识别图中二维码
  80.  
  81. - (void)alertview:(RomAlertView *)alertview didSelectRowAtIndexPath:(NSIndexPath *)indexPath
  82.  
  83. {
  84.  
  85. if (alertview.tag == ) {
  86.  
  87. if ([alertview.otherTitles[indexPath.row] isEqualToString:@"保存图片"]) {
  88.  
  89. NSLog(@"保存图片");
  90.  
  91. [self saveButtonPressed];
  92.  
  93. }else if ([alertview.otherTitles[indexPath.row] isEqualToString:@"识别图中二维码"]){
  94.  
  95. NSLog(@"识别图中二维码");
  96.  
  97. // 隐藏
  98.  
  99. [alertview hide];
  100.  
  101. [self leftBackButtonPressed];
  102.  
  103. AppDelegate *delegate=(AppDelegate *)[[UIApplication sharedApplication]delegate];
  104.  
  105. if([delegate.window.rootViewController isKindOfClass:[UITabBarController class]]){
  106.  
  107. UITabBarController *tabBarController = (UITabBarController *)delegate.window.rootViewController;
  108.  
  109. UINavigationController *navigationController = [tabBarController selectedViewController];
  110.  
  111. UIViewController *vc = navigationController.topViewController;
  112.  
  113. //对结果进行处理跳转网页
  114.  
  115. ADWebViewViewController *controller = [[ADWebViewViewController alloc] init];
  116.  
  117. controller.m_url = qrCodeUrl;
  118.  
  119. controller.hidesBottomBarWhenPushed = YES;
  120.  
  121. [vc.navigationController pushViewController:controller animated:YES];
  122.  
  123. }
  124.  
  125. }
  126.  
  127. }
  128.  
  129. }

iOS - 长按图片识别图中二维码的更多相关文章

  1. Vue实现长按图片识别图中二维码

    Vue实现长按图片识别图中二维码 思路:要想实现可以识别图片中的二维码,那必定是要将这张图进行上传操作,上传则需要file对象格式.不管是在H5还是APP中,展示的图片都是通过url的方式展示在img ...

  2. C#识别图中二维码

    1.在NuGet中添加 ZXing.Net 2.实例代码 /// <summary> /// 识别图中二维码 /// </summary> /// <param name ...

  3. android选取系统相册图片后,识别图中二维码

    项目中添加设备操作需要扫描二维码,考虑到多种扫码方式,也添加直接识别二维码图片的操作. 首先跳转系统相册选取图片 Intent intent = new Intent(Intent.ACTION_PI ...

  4. Android 长按识别图中二维码 zxing

    #基于 Zxing, 初学Android 代码质量不高 //长按,通过zxing读取图片,判断是否有二维码 bigImage.setOnLongClickListener(new View.OnLon ...

  5. 【转】Delphi+Halcon实战一:两行代码识别QR二维码

    Delphi+Halcon实战一:两行代码识别QR二维码 感谢网友:绝代双椒( QQ号应原作者要求隐藏了:xxxx6348)的支持 本文是绝代双椒的作品,因为最近在忙zw量化培训,和ziwang.co ...

  6. zxing 如何识别反转二维码

    说起二维码扫描,估计很多人用的是 zxing 吧. 然而 zxing 虽然好用,但是却有一些坑. 这边分析一下自己实际项目遇到的一个坑. 什么坑呢? 下面举个栗子你就懂了. 这边生成二维码使用的是网络 ...

  7. 二维码合成,将苹果和安卓(ios和android)合成一个二维码,让用户扫描一个二维码就可以分别下载苹果和安卓的应用

    因为公司推广的原因,没有合适的将苹果和安卓(ios和android)合成一个二维码的工具. 因为这个不难,主要是根据浏览器的UA进行判断,所以就自己开发了一个网站 网站名称叫:好推二维码  https ...

  8. php 合并图片 (将活动背景图片和动态二维码图片合成一张图片)

    <?php //案例一:将活动背景图片和动态二维码图片合成一张图片 //图片一 $path_1 = './background.png'; //图片二 $path_2 = './FU0851_2 ...

  9. iOS中二维码的生成与使用(入门篇)

    这里简单总结一下关于二维码的扫描与生成,用的是原生的AVFoundation框架,其实这个框架目前功能还是够用的,不过这里推荐一个二维码扫描的第三方(face++),网址就不贴了,直接度娘就OK,里面 ...

随机推荐

  1. ubuntu12.04 折腾流水

    今天突然间update 一些软件后,就遇到了无法启动桌面,就是输入正确的用户名和密码后还是无法进入系统. 重启后,一直停留在waiting for network configuration, 然后显 ...

  2. android app rate on google play and amazon

    http://stackoverflow.com/questions/11393191/linking-back-to-amazon-app-store-for-ratings   public st ...

  3. python 有class外壳不一定是oop,到底怎么oo?

    1.继承 封装 多态是面向对象的三大特点,当年在考c++期末考试时候这三个特点还是作为填空题出现的. 而且老师也反复唠叨继承封装 多态,这三个词语是背得滚瓜烂熟了,但因为不是特别专业的计算机科班,学得 ...

  4. hdu5289 2015多校联合第一场1002 Assignment

    题意:给出一个数列.问当中存在多少连续子区间,当中子区间的(最大值-最小值)<k 思路:设dp[i]为从区间1到i满足题意条件的解.终于解即为dp[n]. 此外 如果对于arr[i] 往左遍历 ...

  5. iOS 图片加载速度极限优化—FastImageCache解析

    FastImageCache是Path团队开发的一个开源库,用于提升图片的加载和渲染速度,让基于图片的列表滑动起来更顺畅,来看看它是怎么做的.优化点iOS从磁盘加载一张图片,使用UIImageVIew ...

  6. UnicodeEncodeError: ‘gbk’ codec can’t encode character u’\u200e’ in position 43: illegal multib

    [问题] 在执行代码时,提示上述错误,源码如下: # 下载小说... def download_stoy(crawl_list,header): # 创建文件流,将各个章节读入内存 with open ...

  7. PostgreSQL恢复误删数据

    在Oracle中:删除表或者误删表记录:有个闪回特性,不需要停机操作,可以完美找回记录.当然也有一些其他的恢复工具:例如odu工具,gdul工具.都可以找回数据.而PostgreSQL目前没有闪回特性 ...

  8. vmware下虚拟机不能上网问题解决

    这个问题困扰了好久,vmware下装的虚拟机可以通过DHCP获取单独IP,但当用到管控较严格的环境,需要它与主机共享IP时,就不好使了. 今天在一篇文章中找到答案,如下图,windows系统中要启动V ...

  9. Use Reentrant Functions for Safer Signal Handling(译:使用可重入函数进行更安全的信号处理)

    Use Reentrant Functions for Safer Signal Handling 使用可重入函数进行更安全的信号处理 How and when to employ reentranc ...

  10. 【Linux】Could not resolve: www.test.com (Could not contact DNS servers)

    在请求微信小程序服务时候报错了 从这个报错,可以很明显的发现是域名解析不了 1 故障排查:因为代码里调用的是curl,所以测试一下curl是否能够正常解析dns 果然不行, 2 解决办法: vi /e ...