从相册读取本地保存的二维码并跳转h5连接

      因公司业务需求,在扫描二维码基础的前提下,也须要知足用户点击相册按妞,从相册获取本地保存二维码实现签到功能,在网上查阅相关资料后,整理了下,有如下几种方式:ios

  1. ios8.0之后能够经过使用系统原生的框架实现该功能,即CIDetector,直接上代码,可是经过验证发现,大部分二维码都可以识别,可是对于经过拍照保存的二维码,则出现很大几率没法识别,故此方法限制性比较大,不建议推荐使用,如想使用,能够直接照搬网上相关的代码;app

  2. 使用先阶段比较流行的zxingObjC框架来扫描相册的二维码,但该框架很差用的一点就是对拍照的二维码识别度不是很高,并且对于截图保存的二维码也有很强的限制;因该框架对只有在280X280状态下识别度会增大不少,故须要对本地选择的二维码图片进行压缩框架

   NSInteger xx = ceil( img.size.width );ide

   if(xx > 280){测试

    img = [img TransformtoSize:CGSizeMake(280, 280)];spa

       }orm

     这样压缩以后识别度提高不少,可是还会出现部分二维码没法识别的状态,因此这样处理还不够,后经测试,发现把图片压缩成256像素左右,这样基本上可以保证保存在本地的二维码图片可以进行识别,在此粘贴部分代码,供你们参考借鉴:图片

UIImage* bigImage = img;ci

    float actualHeight = bigImage.size.height;it

    float actualWidth = bigImage.size.width;

    float newWidth =0;

    float newHeight =0;

    if(actualWidth > actualHeight) {

        //宽图

        newHeight =256.0f;

        newWidth = actualWidth / actualHeight * newHeight;

    }else{

        //长图

        newWidth =256.0f;

        newHeight = actualHeight / actualWidth * newWidth;

    }

    CGRect rect =CGRectMake(0.0,0.0, newWidth, newHeight);

    UIGraphicsBeginImageContext(rect.size);

    [bigImage drawInRect:rect];// scales p_w_picpath to rect

    img =UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

把进行压缩处理的图片经过zxingObjC进行识别,就能获取二维码里的内容

相关文章
相关标签/搜索