收藏
回答

小程序接入zxing(@zxing/library)无法识别二维码,有人成功过吗?

decode方法报错,Error decoding QR code: e: No MultiFormat Readers were able to detect the code.

对图片截取出二维码或者用选取手机相册的二维码也是一样,二维码没问题

下面是源码

onReady() {

    this.ctx = wx.createCameraContext();

    this.setZoom();

    this.listener = this.ctx.onCameraFrame(this.processFrame.bind(this));

    this.listener.start();

 },

processFrame(frame) {


 const {

   width,

   height,

   data

 } = frame;

 

 this.setData({

     cutSize: height

   });

 

 /* 对当前帧的视频流进行处理 */

 let imageData = new Uint8ClampedArray(data);

 let result = null

 try {

   // 检查数据长度是否符合预期:width * height * 4

   if (imageData.length !== width * height * 4) {

     console.error('图像数据尺寸不匹配');

     return;

   }

   const reader = new MultiFormatReader();

   const luminanceSource = new RGBLuminanceSource(imageData, width, height);

   const binaryBitmap = new BinaryBitmap(new HybridBinarizer(luminanceSource));

   const hints = new Map();

   // 修改 hints 配置

   hints.set(DecodeHintType.TRY_HARDER, true); // 深度扫描

   hints.set(DecodeHintType.POSSIBLE_FORMATS, [BarcodeFormat.QR_CODE]); // 限定格式

   hints.set(DecodeHintType.PURE_BARCODE, true); // 假设整个图像就是二维码

   hints.set(DecodeHintType.CHARACTER_SET, 'UTF-8'); // 指定字符集

   hints.set(DecodeHintType.ALSO_INVERTED, true);    // 允许反转颜色

   result = reader.decode(binaryBitmap, hints);


   this.setData({

     scanResult: result.getText()

   });


   //this.stopScan();

 } catch (e) {

   console.log('Error decoding QR code:', e);

   this.setData({

     scanResult: e.message

   });

 }

 const ctxZO = wx.createCanvasContext('cutCanvasZO');

 wx.canvasPutImageData({

   canvasId: 'cutCanvasZO',

   x: 0,

   y: 0,

   width: width,

   height: height,

   data: imageData,

   success: () => {},

   fail: (err) => {

     console.error('croppedData 失败', err);

   }

 });

},

最后一次编辑于  04-22
回答关注问题邀请回答
收藏

2 个回答

  • 卢小俊
    卢小俊
    04-22

    灰度化二值化之后再处理已经试过了,也是不行

    04-22
    有用
    回复 3
    • 卢小俊
      卢小俊
      05-06
      已解决,RGBLuminanceSource传参
      05-06
      回复
    • 伤心猪大肠
      伤心猪大肠
      05-10
      请问传参是什么问题,怎么解决的呀
      05-10
      回复
    • 卢小俊
      卢小俊
      05-12回复伤心猪大肠
      未处理过的图片数据转成Int32Array传入
      05-12
      回复
  • 智能回答 智能回答 该问答由AI生成
    04-22
    有用
登录 后发表内容