二维码失效 怎么处理不用怎么处理

请登陆后使用
只需一步,快速开始
请完成以下验证码
请完成以下验证码
吧友自助信息发布区,请自行甄别
查看: 1269|回复: 4
二维码解码器出来的用不来怎么办(有果)
& &&&朋友的工作任务要找人扫这个码,我本来打算买微信号来帮她扫,结果用在线的二维码解码器解出来的连接在微信里打不开。还有什么方法可以用呢。。先谢谢了
(99.27 KB, 下载次数: 3)
20:35 上传
另外我是用靠谱帮她扫,就必须要连接才能扫是吧
这个应该是关注公众号& & 你微信能直接打开才奇怪
但是我朋友说他们的任务是多找人扫,我以为是在二维码上能看出是谁的连接//那如果不是,她们公司怎么知道每个员工的任务达到多少呢&
这个应该是关注公众号& & 你微信能直接打开才奇怪
但是我朋友说他们的任务是多找人扫,我以为是在二维码上能看出是谁的连接//那如果不是,她们公司怎么知道每个员工的任务达到多少呢
没人知道么,难道只能用手机搞
Powered by23:54 提问
微信公众号内调用二维码扫描不执行回调方法
最近在开发一个微信公众号,其中使用到了微信的二维码扫描方法,
开发完成后出现很奇怪的问题,Android手机上扫描时js不执行回调方法而是自动打开了新页面,
因为我的二维码扫描出来后是一个页面地址,感觉我配置回调方法不起作用似的,
但这个现象吧也不是毕现的,Android上偶尔会出现,iOS却是正常的,不知道大家有遇到过类似现象没,该如何解决呢?
二维码解析后的信息:
js调用代码:
$.post(vodka_config_url,{"url":url,"code":code},function(data){
wx.config({
debug: false,
appId: data.data.appId,
timestamp: data.data.timestamp,
nonceStr: data.data.nonceStr,
signature: data.data.signature,
jsApiList: ['openLocation','getLocation','scanQRCode','chooseWXPay']
$('.scan_btn').click(function(){
wx.ready(function(){
wx.scanQRCode({
needResult: 1,
desc: '请扫描二维码',
scanType: ["qrCode","barCode"],//一维码、二维码
success: function (res) {
var reg = new RegExp(".*sn=([0-9]+)$");
var r=res.resultStr.match(reg);
if(null!=r){
submitCode(r[1]);
alert("二维码不正确");
wx.error(function (res) {
alert(res.errMsg);
按赞数排序
我也遇到这个问题,安卓下面有问题,已经将needResult: 1,但是仍然会跳出扫描结果页面...而我是需要将扫描结果处理的...IOS上面测试过几百次都没问题.但是安卓
会时不时会弹出扫描结果...而且还把我的整个页面刷新了,我这个页面需要频繁调用扫一扫接口..并且要判断扫描的结果是否符合标准.因为接口问题导致页面刷新了..
之前的扫描全部无效.....有没有人有解决办法呢?
我也遇到这个问题,安卓下面有问题,已经将needResult: 1,但是仍然会跳出新页面!
同求解决方案。醉了,20次内出现1次左右的概率,多个安卓手机都有类似问题。
恶心的微信,到现在了还不解决这个BUG,2015年就有人提到这个BUG,这BUG这么严重,出现几率超级大,就相当于你去ATM取款,30%几率被吞卡,这BUG不解决,基于扫一扫开发的功能全部不能用!!楼上说20次出现1次,我这边基本10次不到就会出现1次,甚至第一次扫就会出现
我的是已经执行自己的success回调函数了,还会跳到微信扫码后的二维码内容页面。。。ios开发(19)
扫描二维码
首先我们来想一想具体的步骤,大概流程应该是:1.打开设备的摄像头--&2.进行二维码图像捕获--&3.获取捕获的图像进行解析--&4.取得解析结果进行后续处理。这些流程需要用到AVFoundation这个库,注意导入。
//获取一个AVCaptureDevice对象,可以理解为打开摄像头这样的动作
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
//获取一个AVCaptureDeviceInput对象,将上面的'摄像头'作为输入设备
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:_device error:nil];
//拍完照片以后,需要一个AVCaptureMetadataOutput对象将获取的'图像'输出,以便进行对其解析
AVCaptureMetadataOutput *output = [[AVCaptureMetadataOutput alloc]init];
//获取输出需要设置代理,在代理方法中获取
[output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
//设置输出类型,如AVMetadataObjectTypeQRCode是二维码类型,下面还增加了条形码。如果扫描的是条形码也能识别
output.metadataObjectTypes = @[AVMetadataObjectTypeEAN13Code,
AVMetadataObjectTypeEAN8Code,
AVMetadataObjectTypeCode128Code,
AVMetadataObjectTypeQRCode];
上面完成了捕获的设置,但是并未正在开始'扫描',要完成一次扫描的过程,需要用到AVCaptureSession这个类,这个session类把一次扫描看做一次会话,会话开始后才是正在的'扫描'开始,具体代码如下。
AVCaptureSession *session = [[AVCaptureSession alloc]init];
[session setSessionPreset:AVCaptureSessionPresetHigh];//扫描的质量
if ([session canAddInput:input]){
[session addInput:input];//将输入添加到会话中
if ([session canAddOutput:output]){
[session addOutput:output];//将输出添加到会话中
接下来我们要做的不是立即开始会话(开始扫描),如果你现在调用会话的startRunning方法的话,你会发现屏幕是一片黑,这时由于我们还没有设置相机的取景器的大小。设置取景器需要用到AVCaptureVideoPreviewLayer这个类。具体代码如下:
AVCaptureVideoPreviewLayer *preview =[AVCaptureVideoPreviewLayer layerWithSession:session];
preview.videoGravity = AVLayerVideoGravityR
[preview setFrame:self.view.bounds];//设置取景器的frame
[self.view.layer insertSublayer:preview atIndex:0];
接下来我们就可以调用session的startRunning方法了,这时我们的扫描就真正开始了。想要获得扫描的结果,需要实现session的代理方法- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection
*)connection,代码如下:
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection
[self.session stopRunning];//停止会话
[self.preview removeFromSuperlayer];//移除取景器
if (metadataObjects.count & 0) {
AVMetadataMachineReadableCodeObject *obj = metadataObjects[0];
NSString *result = obj.stringV//这就是扫描的结果啦
//对结果进行处理...
如果要做到为用户考虑的话,还得加入照明的功能或者设置兴趣区域。
设设置兴趣区域
使用过微信中的扫一扫的话,你应该发现在扫描界面中间有一个矩形限定框,这个框就是兴趣区域了。这个兴趣区域是AVCaptureMetadataOutput的rectOfInterest属性。rectOfInterest的值的范围都是0-1,是按比例取值而不是实际尺寸,所以设置的时候要注意的一点。还要注意rectOfInterest都是按照横屏来计算的,所以当竖屏的情况下x轴和y轴要交换一下。代码如下:
CGSize size = self.view.bounds.
CGSize transparentAreaSize = CGSizeMake(200,200);
CGRect cropRect = CGRectMake((size.width - transparentAreaSize.width)/2, (size.height - transparentAreaSize.height)/2, transparentAreaSize.width, transparentAreaSize.height);
output.rectOfInterest = CGRectMake(cropRect.origin.y/size.width,
cropRect.origin.x/size.height,
cropRect.size.height/size.height,
cropRect.size.width/size.width);
加入照明功能
加入照明功能能让用户在光照条件不好的情况下顺利的进行进行扫描操作,代码如下:
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
if (device.hasTorch) {
// 判断设备是否有闪光灯
BOOL b = [device lockForConfiguration:&error];
if (error) {
NSLog(@&lock torch configuration error:%@&, error.localizedDescription);
device.torchMode = (device.torchMode == AVCaptureTorchModeOff ? AVCaptureTorchModeOn : AVCaptureTorchModeOff);
[device unlockForConfiguration];
从图片中读取二维码
从图片中直接读取二维码的功能在iOS7上面苹果没有实现,不过在iOS上已经填补了这一功能。主要用到的是读取主要用到CoreImage。
废话不多说,直接上代码。
+ (NSString *)scQRReaderForImage:(UIImage *)qrimage{
CIContext *context = [CIContext contextWithOptions:nil];
CIDetector *detector = [CIDetector detectorOfType:CIDetectorTypeQRCode context:context options:@{CIDetectorAccuracy:CIDetectorAccuracyHigh}];
CIImage *image = [CIImage imageWithCGImage:qrimage.CGImage];
NSArray *features = [detector featuresInImage:image];
CIQRCodeFeature *feature = [features firstObject];
NSString *result = feature.messageS
既然讲到要从相册获取照片,那么顺便把从相册获取照片也讲一下吧。
从相册获取照片主要用到的是UIImagePickerController,这是苹果给我们分装好的一个相册选取的控制器。实现起来也是很简单的。
- (void)readerImage{
UIImagePickerController *photoPicker = [[UIImagePickerController alloc] init];
photoPicker.delegate =
photoPicker.sourceType = UIImagePickerControllerSourceTypePhotoL
photoPicker.view.backgroundColor = [UIColor whiteColor];
[self presentViewController:photoPicker animated:YES completion:NULL];
当我们从照片库选择取了照片后要带调用UIImagePickerController的代理方法获取选择的照片。
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
[self dismissViewControllerAnimated:YES completion:^{
//code is here ...
UIImage *srcImage = [info objectForKey:UIImagePickerControllerOriginalImage];
NSString *result = [QRCScanner scQRReaderForImage:srcImage];//调用上面讲过的方法对图片中的二维码进行处理
[self.navigationController popViewControllerAnimated:YES];
生成二维码
生成二维码和从图片中读取二维码一样要用到CoreImage,具体步骤如下:
- (UIImage *)makeQRCodeForString(NSString *)string{
NSString *text =
NSData *stringData = [text dataUsingEncoding: NSUTF8StringEncoding];
CIFilter *qrFilter = [CIFilter filterWithName:@&CIQRCodeGenerator&];
[qrFilter setValue:stringData forKey:@&inputMessage&];
[qrFilter setValue:@&M& forKey:@&inputCorrectionLevel&];
//二维码颜色
UIColor *onColor = [UIColor redColor];
UIColor *offColor = [UIColor blueColor];
//上色,如果只要白底黑块的QRCode可以跳过这一步
CIFilter *colorFilter = [CIFilter filterWithName:@&CIFalseColor&
keysAndValues:
@&inputImage&,qrFilter.outputImage,
@&inputColor0&,[CIColor colorWithCGColor:onColor.CGColor],
@&inputColor1&,[CIColor colorWithCGColor:offColor.CGColor],
CIImage *qrImage = colorFilter.outputI
CGSize size = CGSizeMake(300, 300);
CGImageRef cgImage = [[CIContext contextWithOptions:nil] createCGImage:qrImage
fromRect:qrImage.extent];
UIGraphicsBeginImageContext(size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetInterpolationQuality(context, kCGInterpolationNone);
CGContextScaleCTM(context, 1.0, -1.0);//生成的QRCode就是上下颠倒的,需要翻转一下
CGContextDrawImage(context, CGContextGetClipBoundingBox(context), cgImage);
UIImage *codeImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGImageRelease(cgImage);
return [UIImage imageWithCIImage:qrImage];
当然如果你不想写这个代码的话,你也可以使用一个轻量级的开源代码来帮你实现。它的使用非常简单,导入UIImage+MDQRCode这个扩展后,使用UIImage的类方法就可以调用了。
+ (UIImage *)mdQRCodeForString:(NSString *)qrString size:(CGFloat)
+ (UIImage *)mdQRCodeForString:(NSString *)qrString size:(CGFloat)size fillColor:(UIColor *)fillC
QRCScanner
如果你连上面的代码一点儿都不想写,想一句话就集成扫描功能,你可以使用我封装的QRCScanner,地址点。
用第三方ZBar,ZXing是导入有问题?或者是编译有问题?使用自带的就不用担心这些问题,而且是秒扫哦!如果你觉得我的文章对你有帮助,请随意打赏!
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:939次
排名:千里之外
转载:15篇
(6)(12)(2)(1)you have been blocked}

我要回帖

更多关于 二维码失效 怎么处理 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信