【问题标题】:How to scan white on Black barcode android,(inverted can)?如何在黑色条码 android 上扫描白色(倒罐)?
【发布时间】:2020-09-03 10:42:22
【问题描述】:

我想在android中扫描黑底白字。我用过zxing,它允许我只扫描白底黑字。 我如何扫描和反转条形码或使用哪个库? 感谢您的帮助。

【问题讨论】:

    标签: android zxing barcode-scanner zbar


    【解决方案1】:

    如果您仍在参考 Journeyapps 嵌入式 zxing 扫描仪, integrator.addExtra(Intents.Scan.INVERTED_SCAN, true);

    【讨论】:

    • 这个怎么加?
    • @BMM 嘿伙计,抱歉回复晚了。看看this
    【解决方案2】:

    我以这种方式将来自相机预览的byte[] 平庸地反转了

      for (int y = 0; y < data.length; y++) {
           data[y] = (byte) ~data[y];
      }
    

    在将其传递给 ZXing 之前。我有两种支持两种方式,所以我平庸地决定每 n 次反转。它可能效率不高或太聪明,但在我的情况下很简单并且足够好

    【讨论】:

    • 你在哪里反转那个。因为我什至没有阅读条形码。谢谢
    • 你说的我连条码都不读是什么意思?介意显示一些代码吗?
    • Okey。例如,我从这个链接的项目开始:github.com/journeyapps/zxing-android-embedded。我称之为 IntentIntegrator integrator = new IntentIntegrator(this);积分器.initiateScan();
    • 它扫描普通条码,但不是黑底白字。您能帮我解决一下您的解决方案或图书馆使用问题吗。非常感谢
    • 我从未使用过那个库。我赶紧查了一下,我觉得你不能用IntentIntegrator来扫描倒置的二维码
    【解决方案3】:

    用这个 sn-p 更新你的代码:

    import { BarcodeFormat, HTMLCanvasElementLuminanceSource } from '@zxing/library';
      ngOnInit() {
       
        HTMLCanvasElementLuminanceSource.makeBufferFromCanvasImageData = function (canvas) {
          var imageData = canvas.getContext('2d').getImageData(0, 0, canvas.width, canvas.height);
          if(localStorage.inverted.toString()==="true"){
            
            for (var i = 0; i < imageData.data.length; i += 4) {
              var r = imageData.data[i]; // Red color lies between 0 and 255
              var g = imageData.data[i + 1]; // Green color lies between 0 and 255
              var b = imageData.data[i + 2]; // Blue color lies between 0 and 255
              var a = imageData.data[i + 3]; // Transparency lies between 0 and 255
      
              var invertedRed = 255 - r;
              var invertedGreen = 255 - g;
              var invertedBlue = 255 - b;
      
              imageData.data[i] = invertedRed;
              imageData.data[i + 1] = invertedGreen;
              imageData.data[i + 2] = invertedBlue;
            }
          }
         
          return HTMLCanvasElementLuminanceSource.toGrayscaleBuffer(imageData.data, canvas.width, canvas.height);
      };
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-22
      • 1970-01-01
      • 2019-04-06
      • 2015-02-19
      • 1970-01-01
      • 2020-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多