条形码检测器:detect() 方法

安全上下文: 此功能仅在 安全上下文 (HTTPS) 中可用,在某些或所有 支持的浏览器 中。

注意: 此功能在 Web 工作线程 中可用。

实验性: 这是一个 实验性技术
在生产环境中使用之前,请仔细查看 浏览器兼容性表

detect() 方法是 BarcodeDetector 接口的方法,它返回一个 Promise,该 Promise 将使用 Array 来实现,该 Array 包含图像中检测到的条形码。

语法

js
detect(imageBitmapSource)

参数

imageBitmapSource

接收图像源作为参数。这可以是 HTMLImageElementSVGImageElementHTMLVideoElementHTMLCanvasElementImageBitmapOffscreenCanvasVideoFrame、类型为图像的 BlobImageData 对象。

返回值

返回一个 Promise,该 Promise 将使用 DetectedBarcode 对象数组来实现,该数组具有以下属性

boundingBox

一个 DOMRectReadOnly,它返回表示检测到的条形码范围的矩形的尺寸,与图像对齐。

cornerPoints

检测到的条形码的四个角点相对于图像的 x 和 y 坐标,从左上角开始,顺时针方向排列。由于图像中的透视失真,这可能不是正方形。

format

检测到的条形码格式。(有关格式的完整列表,请参阅 支持的条形码格式)。

rawValue

从条形码数据解码的字符串。

异常

TypeError

如果未指定参数或 type 不是 ImageBitmapSource 的类型,则抛出。

SecurityError DOMException

如果 imageBitmapSource 具有来源并且与文档的来源不同,或者如果 imageBitmapSourceHTMLCanvasElement 并且其 origin-clean 标志设置为 false,则抛出。

InvalidStateError DOMException

如果 imageBitmapSourceHTMLImageElement 并且未完全解码或解码失败,或者是一个 HTMLVideoElement,并且其 readyStateHAVE_NOTHINGHAVE_METADATA,则抛出。

示例

此示例使用 detect() 方法来检测给定图像中的条形码。这些条形码将被迭代,并且条形码数据将被记录到控制台中。

js
barcodeDetector
  .detect(imageEl)
  .then((barcodes) => {
    barcodes.forEach((barcode) => console.log(barcode.rawValue));
  })
  .catch((err) => {
    console.error(err);
  });

规范

规范
图像中的加速形状检测
# dom-barcodedetector-detect

浏览器兼容性

BCD 表仅在启用 JavaScript 的浏览器中加载。