189 8069 5689

从相册读取本地保存的二维码并跳转h5链接-创新互联

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

类乌齐网站制作公司哪家好,找成都创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站建设等网站项目制作,到程序开发,运营维护。成都创新互联2013年开创至今到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联
  1. ios8.0以后可以通过使用系统原生的框架实现该功能,即CIDetector,直接上代码,但是通过验证发现,大部分二维码都能够识别,但是对于通过拍照保存的二维码,则出现很大概率无法识别,故此方法限制性比较大,不建议推荐使用,如想使用,可以直接照搬网上相关的代码;

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

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

  if(xx > 280){

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

    }

   这样压缩之后识别度提升很多,但是还会出现部分二维码无法识别的状态,所以这样处理还不够,后经测试,发现把图片压缩成256像素左右,这样基本上能够保证保存在本地的二维码图片能够进行识别,在此粘贴部分代码,供大家参考借鉴:

UIImage* bigImage = img;

  float actualHeight = bigImage.size.height;

  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进行识别,就能获取二维码里的内容

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文名称:从相册读取本地保存的二维码并跳转h5链接-创新互联
网页地址:http://cdxtjz.com/article/dedphp.html

其他资讯