zoukankan      html  css  js  c++  java
  • Android Zxing调整扫描区域 优化取图速度

    Zxing 是google提供的二维码扫描project

    Demo本身默认的扫图区域最大仅仅有 360*480    须要拉开非常远的距离才干将整个二维码扫描到

    因此须要我们自己调整取图大小

     

    在CameraManager.java这个类中进行调整

    默认的大小是 下面这4个參数 

    //  private static final int MIN_FRAME_WIDTH = 240;
    //  private static final int MIN_FRAME_HEIGHT = 240;
    //  private static final int MAX_FRAME_WIDTH = 480;
    //  private static final int MAX_FRAME_HEIGHT = 360;


    依据屏幕大小调整      大家能够增大这些数值 : 最小的宽 高    ; 最大宽高

     

    參数实际在 getFramingRect() 方法中起作用

    下面是原本Demo中提供的

     /**
       * Calculates the framing rect which the UI should draw to show the user where to place the
       * barcode. This target helps with alignment as well as forces the user to hold the device
       * far enough away to ensure the image will be in focus.
       *
       * @return The rectangle to draw on screen in window coordinates.
       */
      public Rect getFramingRect() {
        Point screenResolution = configManager.getScreenResolution();
        if (framingRect == null) {
          if (camera == null) {
            return null;
          }
          
          //原生
          int width = screenResolution.x * 3 / 4;
          if (width < MIN_FRAME_WIDTH) {
            width = MIN_FRAME_WIDTH;
          } else if (width > MAX_FRAME_WIDTH) {
            width = MAX_FRAME_WIDTH;
          }
          int height = screenResolution.y * 3 / 4;
          if (height < MIN_FRAME_HEIGHT) {
            height = MIN_FRAME_HEIGHT;
          } else if (height > MAX_FRAME_HEIGHT) {
            height = MAX_FRAME_HEIGHT;
          }
          int leftOffset = (screenResolution.x - width) / 2;
          int topOffset = (screenResolution.y - height) / 2;
          framingRect = new Rect(leftOffset, topOffset, leftOffset + width, topOffset + height);
          Log.d(TAG, "Calculated framing rect: " + framingRect);
        }
        return framingRect;
      }

     

    我为了适配不同的屏幕大小将代码改成了

      public Rect getFramingRect() {
        Point screenResolution = configManager.getScreenResolution();
        if (framingRect == null) {
          if (camera == null) {
            return null;
          }
          
        //改动之后  
        int width = screenResolution.x * 7 / 10;
        int height = screenResolution.y * 7 / 10;
        
        int leftOffset = (screenResolution.x - width) / 2;
        int topOffset = (screenResolution.y - height) / 3;
        framingRect = new Rect(leftOffset, topOffset, leftOffset + width, topOffset + height);
          
          
          Log.d(TAG, "Calculated framing rect: " + framingRect);
        }
        return framingRect;
      }
    

    宽高 我占领了屏幕的   7/10
    当然...取图改的这么大   会多占一点内存....对应的扫描的时候快得多

     

    以上是实际读取图片的大小

    实际的界面美化 在ViewfinderView 这个类其中进行绘制

     

    不足之处请在下方留言  谢谢

    希望对您实用

    资源下载地址:http://download.csdn.net/detail/aaawqqq/7281577

  • 相关阅读:
    kbmMW 5.07.00试用笔记
    在 Andriod/IOS 程序中使用自定义字体
    【转】Delphi 10.3关于相机该注意的细节
    Delphi 10.3终于来了
    REST easy with kbmMW #17 – Database 6 – Existing databases
    【go】1环境搭建go语言介绍
    【ESSD技术解读02】企业级利器,阿里云 NVMe 盘和共享存储
    项目实战总结以及接入UAPM
    RocketMQ 5.0 POP 消费模式探秘
    Cube 技术解读 | 详解「支付宝」全新的卡片技术栈
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3764371.html
Copyright © 2011-2022 走看看