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

瀏覽器相容性