BarcodeDetector:detect() 方法

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

注意:此功能在 Web Workers 中可用。

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

BarcodeDetector 接口的 detect() 方法返回一个 Promise,该 Promise 会解析为一个 Array,其中包含在图像中检测到的条形码。

语法

js
detect(imageBitmapSource)

参数

imageBitmapSource

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

返回值

返回一个 Promise,该 Promise 会解析为一个 DetectedBarcode 对象数组,其中包含以下属性

boundingBox

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

cornerPoints

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

格式(format)

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

rawValue

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

异常

TypeError

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

SecurityError DOMException

如果 imageBitmapSource 具有 origin 属性,并且与文档的 origin 不一致,或者 imageBitmapSource 是一个 HTMLCanvasElement 且其 origin-clean 标志设置为 false,则抛出异常。

InvalidStateError DOMException

如果 imageBitmapSource 是一个 HTMLImageElement 且尚未完全解码或解码失败,或者是一个 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

浏览器兼容性