Barcode Detection API - Parte 2
Usando a câmera para detectar código
Desta vez usaremos TypeScript e para que isso seja feito sem alertas de erro no código, precisaremos que a API esteja devidamente tipada, porém, não temos disponível no arquivo lib.dom.ts do TypeScript. Eu mesmo escrevi um seguindo a especificação, vai servir por enquanto.
barcode.d.ts
Crie um arquivo barcode.d.ts com o conteúdo a seguir.
interface BarcodeDetector {
new (barcodeDetectorOptions?: BarcodeDetectorOptions): BarcodeDetector;
static getSupportedFormats(): Promise<BarcodeFormat[]>;
detect(image: ImageBitmapSource): Promise<DetectedBarcode[]>;
}
declare var BarcodeDetector: {
prototype: BarcodeDetector;
new (barcodeDetectorOptions?: BarcodeDetectorOptions): BarcodeDetector;
};
interface BarcodeDetectorOptions {
formats: BarcodeFormat;
}
interface Point2D {
x: number
y: number
}
interface DetectedBarcode {
boundingBox: DOMRectReadOnly;
rawValue: string;
format: BarcodeFormat;
cornerPoints: Point2D[];
}
type BarcodeFormat =
| "aztec"
| "code_128"
| "code_39"
| "code_93"
| "codabar"
| "data_matrix"
| "ean_13"
| "ean_8"
| "itf"
| "pdf417"
| "qr_code"
| "unknown"
| "upc_a"
| "upc_e";
Agora sim, partimos para implementação.
Basicamente o que precisamos fazer é:
Capturar o
streamde vídeo do dispositivoDesenhar o
videoem um elementocanvasExecutar o método de detecção no
canvasSe houver resultados, desenhar no
canvas
Vamos lá!
main.ts
Vamos separar a função draw
draw.ts
De volta ao main.ts, vamos finalizar!
E então, o que achou? Espero que tenha gostado!
Abraço
Last updated
Was this helpful?