日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS QRcode识别及相册图片二维码读取识别

發布時間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS QRcode识别及相册图片二维码读取识别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對二維碼的處理及系統原生API掃描、 Zbar掃描和Zing掃描 比較

iOS原生API

系統掃描的效率是最高,反正包括各種你見過的沒見過的碼,但是有一點我不是很清楚 iOS7 掃描二維碼可以,但從相冊照片讀取二維碼蘋果不支持,必須是iOS8+。
https://github.com/yannickl/QRCodeReaderViewController
https://github.com/zhengjinghua/MQRCodeReaderViewController

這兩個例子已經寫的非常清楚了

// 對于識別率的精度 就是屏幕有波浪一樣[self.captureSession setSessionPreset:AVCaptureSessionPresetHigh];// 改成了 降低采集頻率[self.captureSession setSessionPreset:AVCaptureSessionPreset640x480];

不知道 有什么好的方法

ZXing 和 ZBar

具體代碼 我就不在這里寫了,Demo里 都寫了,而且百度谷歌千篇一律,說說ZXing的一些用到的特點:

  • 對那種小圓點的二維碼 ZXing和原生API 都是支持的,而ZBar 貌似不是支持的,反正我沒搞定。
  • ZXing 現在還在繼續維護 ZBar 而已經停止了
  • ZXing 可以識別圖片中多個二維碼

ZBar中的識別率 本人覺得還是比較低

//ZBar 中對 圖片中二維碼 識別UIImage * aImage = #所獲取的圖片#ZBarReaderController *read = [ZBarReaderController new];CGImageRef cgImageRef = aImage.CGImage;ZBarSymbol* symbol = nil;for(symbol in [read scanImage:cgImageRef]){qrResult = symbol.data ;NSLog(@"qrResult = symbol.data %@",qrResult);}

ZXing 對圓點二維碼的支持 及能夠識別圖片中多個二維碼

// ZXing 只識別單個二維碼UIImage *image = #需要識別的圖片# ZXCGImageLuminanceSource *source = [[ZXCGImageLuminanceSource alloc] initWithCGImage:image.CGImage]; ZXHybridBinarizer *binarizer = [[ZXHybridBinarizer alloc] initWithSource: source];ZXBinaryBitmap *bitmap = [[ZXBinaryBitmap alloc] initWithBinarizer:binarizer];NSError *error;id<ZXReader> reader; if (NSClassFromString(@"ZXMultiFormatReader")) {reader = [NSClassFromString(@"ZXMultiFormatReader") performSelector:@selector(reader)];}ZXDecodeHints *_hints = [ZXDecodeHints hints];ZXResult *result = [reader decode:bitmap hints:_hints error:&error];if (result == nil) {NSLog(@"無QRCode");return;}NSLog(@"QRCode = %d,%@",result.barcodeFormat,result.text);

ZXing 識別圖片中多個二維碼

UIImage *image = #需要識別的圖片# ZXCGImageLuminanceSource *source = [[ZXCGImageLuminanceSource alloc] initWithCGImage:image.CGImage]; ZXHybridBinarizer *binarizer = [[ZXHybridBinarizer alloc] initWithSource: source];ZXBinaryBitmap *bitmap = [[ZXBinaryBitmap alloc] initWithBinarizer:binarizer];ZXDecodeHints *hints = [ZXDecodeHints hints];NSError *error = nil;ZXQRCodeMultiReader * reader2 = [[ZXQRCodeMultiReader alloc]init];NSArray *rs = [reader2 decodeMultiple:bitmap error:&error];// 或者 NSArray *rs =[reader2 decodeMultiple:bitmap hints:hints error:&error];NSLog(@" err = %@",error);for (ZXResult *resul in rs) {NSLog(@" ---%@",resul.text);}

后面 就看你需求了

iOS WebView中 長按二維碼的識別

思路:

  • 長按webView 的過程中 截屏,再去解析是否有二維碼,但是有個缺點 就是 萬一截了一個 一半的二維碼 那就無解了。
  • 在webview中 注入獲取點擊圖片的JS 獲取圖片,再解析。缺點:萬一圖片過大 需要下載,勢必會影響用戶體驗。
  • webview 加載完成圖片之后,圖片勢必緩存在 webview里,有什么方法可以獲取webview 里的緩存圖片。
  • 本人目前用的是 第二種方式。求大神教我第三種...
    我在TOWebViewController?做了類擴展

    //要注入的 js 代碼 static NSString* const kTouchJavaScriptString= @"document.ontouchstart=function(event){\ x=event.targetTouches[0].clientX;\ y=event.targetTouches[0].clientY;\ document.location=\"myweb:touch:start:\"+x+\":\"+y;};\ document.ontouchmove=function(event){\ x=event.targetTouches[0].clientX;\ y=event.targetTouches[0].clientY;\ document.location=\"myweb:touch:move:\"+x+\":\"+y;};\ document.ontouchcancel=function(event){\ document.location=\"myweb:touch:cancel\";};\ document.ontouchend=function(event){\ document.location=\"myweb:touch:end\";};"; //部分核心代碼 - (BOOL)ad_webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{NSString *requestString = [[request URL] absoluteString];NSArray *components = [requestString componentsSeparatedByString:@":"];if ([components count] > 1 && [(NSString *)[components objectAtIndex:0]isEqualToString:@"myweb"]) {if([(NSString *)[components objectAtIndex:1] isEqualToString:@"touch"]){if ([(NSString *)[components objectAtIndex:2] isEqualToString:@"start"]){self.gesState = GESTURE_STATE_START;NSLog(@"touch start!");float ptX = [[components objectAtIndex:3]floatValue];float ptY = [[components objectAtIndex:4]floatValue];NSLog(@"touch point (%f, %f)", ptX, ptY);NSString *js = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).tagName", ptX, ptY];NSString * tagName = [self.webView stringByEvaluatingJavaScriptFromString:js];self.imgURL = nil;if ([tagName isEqualToString:@"IMG"]) {self.imgURL = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).src", ptX, ptY];}if (self.imgURL) {self.timer = [NSTimer scheduledTimerWithTimeInterval:longGestureInterval target:self selector:@selector(handleLongTouch) userInfo:nil repeats:NO];}}else if ([(NSString *)[components objectAtIndex:2] isEqualToString:@"move"]){self.gesState = GESTURE_STATE_MOVE;NSLog(@"you are move");}}if ([(NSString*)[components objectAtIndex:2]isEqualToString:@"end"]) {[self.timer invalidate];self.timer = nil;self.gesState = GESTURE_STATE_END;NSLog(@"touch end");}if (self.imgURL && self.gesState == GESTURE_STATE_END) {NSLog(@"點的是圖片");}return NO;} // return YES;return [self ad_webView:webView shouldStartLoadWithRequest:request navigationType:navigationType]; } - (void)ad_webViewDidFinishLoad:(UIWebView *)webView{//控制緩存[[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@"WebKitCacheModelPreferenceKey"];// 響應touch事件,以及獲得點擊的坐標位置,用于保存圖片[webView stringByEvaluatingJavaScriptFromString:kTouchJavaScriptString];[self ad_webViewDidFinishLoad:webView]; }

    基本就可以了。

    • 終于找到取 webView 緩存的圖片的方法了。 用的是 NSURLProtocol 方式,在github上找了一個?RNCachingURLProtocol,基本原理是:webView 在處理請求的過程中會調用
    - (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response

    URLProtocol 把webView請求返回來的 data 用壓縮的方式的存儲在 cache的文件夾下, 發出請求的時候會先去讀取緩存。本人對 RNCachingURLProtocol 做過修改 具體請看Demo

    • 轉載請注明 作者:好迪?文章地址
    • 水平有限 歡迎批評指正評論

    Demo地址

    https://github.com/cuiwe000/QRCodeDemo.git

    總結

    以上是生活随笔為你收集整理的iOS QRcode识别及相册图片二维码读取识别的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 在线播放黄色网址 | 日本免费a级片 | 欧美一级录像 | 97精品在线视频 | 成人在线免费视频观看 | 国产高潮国产高潮久久久91 | 国产精品一区二区久久国产 | 日韩性生交大片免费看 | 中国第一毛片 | 久久亚洲一区二区 | 日韩精品中文字幕一区 | 男人的天堂久久久 | 手机看片1024日韩 | 精品一区二区在线免费观看 | 88av在线播放| 亚洲日本成人在线观看 | 99视频99| 天天曰天天 | 国产精品精品视频 | 欧美自偷自拍 | 亚洲国产精品第一页 | 日韩久久av| 午夜一区二区三区免费观看 | 日韩视频免费在线 | 成人免费一级片 | 日本精品二区 | 亚洲精品乱码久久久久久麻豆不卡 | 一区二区三区四区国产 | 狠狠操天天射 | 久久午夜影视 | 草色噜噜噜av在线观看香蕉 | 国产亚洲AV无码成人网站在线 | 久久入口 | 欧美日韩一区在线播放 | 男女爱爱网站 | 91av在线看| 农村脱精光一级 | 美女诱惑一区 | 人人爽爽人人 | ass亚洲熟妇毛耸耸pics | 欧美a∨亚洲欧美亚洲 | 日本精品一区在线 | 男女插插网站 | 精品日韩一区 | 先锋影音一区二区 | 久久一区欧美 | 国产三级日本三级在线播放 | 国产大学生av | 一级美女大片 | www.youjizz日本 | 免费av在线电影 | 成人另类小说 | 欧美交换国产一区内射 | 中文字幕理伦片免费看 | 国产初高中真实精品视频 | 色哒哒影院 | 午夜激情导航 | www.爱操| 先锋影视av | 6080电视影片在线观看 | 亚洲免费影视 | 天堂在线中文在线 | 男人天堂视频在线观看 | 国产成人精品综合 | 欧美视频在线一区 | 暴操白虎| 丰满肥臀噗嗤啊x99av | 91激情网 | 伊人999| 国产福利网 | 在线观看中文字幕一区 | 国产情侣久久久久aⅴ免费 caoporn成人 | 韩国在线不卡 | 日韩黄色a级片 | 黄色日批视频 | 国产自产在线 | 激情av在线| 青青草综合网 | 性做爰裸体按摩视频 | av导航在线观看 | av五十路| 久久伊人精品 | 亚洲黄色在线播放 | 五月激情婷婷综合 | 综合久久一区 | 日韩Av无码精品 | 日本免费色视频 | 欧美一级网| 欧美一区影院 | 亚洲综合免费观看高清完整版 | 成人毛片在线精品国产 | 欧美亚洲日本国产 | 高潮白浆 | 大陆av片| 制服丝袜在线播放 | 久久99精品波多结衣一区 | 四虎影院黄色 | 午夜福利三级理论电影 | 国产成人精品免费在线观看 |