Barcode Detection API
Detectar códigos de barras lineares e bidimensionais em imagens nunca foi tão simples.
Last updated
Detectar códigos de barras lineares e bidimensionais em imagens nunca foi tão simples.
Last updated
Esta é uma especificação escrita por um grupo da comunidade W3C, nomeado como Accelerated Shape Detection in Images (shape detection api).
Fotos e imagens constituem a maior parte da Web e muitas incluem informações detectáveis por métodos computacionais, que por sua vez são um tanto caros de processar, no entanto levaria a casos de uso interessantes como marcação de pessoas ou objetos em fotos e encaminhamento para páginas com facilidade. Você pode estar pensando "mas clicar em um link não é mais simples que ler um QRCode?" e a resposta é sim!
Porém, existem outros casos de uso onde estamos no mundo real e desejamos acessar um recurso do mundo virtual, um exemplo bem útil e comum de encontrar é quando chegamos a um restaurante e o acesso ao cardápio é feito através de um QRCode impresso, sem isso precisamos descobrir a URL e digita-la letra por letra. Pode não parecer, mas em algumas ocasiões isso pode ser frustrante ou desafiador, caso o domínio não seja amigável ou até mesmo em casos de acessibilidade para um surdo-mudo ou alguém com dificuldades especiais.
Alguns casos de uso por meio de formatos de código de barras suportados. Os códigos QR podem ser usados para pagamentos on-line, navegação na web ou estabelecimento de conexões de mídia social, os códigos Aztec podem ser usados para escanear cartões de embarque e os aplicativos de compras podem usar códigos de barras EAN para comparar preços de itens físicos.
Entrando nos conceitos técnicos, a detecção é obtida por meio do método detect()
, que recebe um objeto, podendo ser um dos a seguir, HTMLImageElement
, SVGImageElement
, HTMLVideoElement
, HTMLCanvasElement
, ImageBitmap
, OffscreenCanvas
, VideoFrame
, Blob
, ou ImageData
. Além de parâmetros opcionais que podem fornecer dicas sobre quais formatos de código detectar.
Bem, agora podemos começar a explorar as APIs disponíveis no objeto window
Verifique se está utilizando algum dos navegadores que tenham suporte, conforme a tabela acima e usando o console JavaScript, execute:
BarcodeDetector.getSupportedFormats().then(console.log)
O retorno é um array contendo os formatos de códigos que podem ser lidos.
Faça o download do pacote de imagens em SVG que preparei para nossos testes.
Para testar essa API da Web apenas um arquivo HTML simples será suficiente, vamos lá.
Hoje paramos por aqui mas em breve escrevo uma implementação mais avançada usando esta API.
Valeu, abraço.
[]s
Format | Description | Image |
---|---|---|
Chrome
83+
Edge
83+
Opera
69+
Android Browser
126
Chrome for Android
126
Opera Mobile
80+
Samsung Internet
13+
Safari on iOS
Firefox
Safari
aztec
Uma matriz quadrada bidimensional seguindo iso24778 e com um padrão quadrado de alvo no centro, lembrando assim uma pirâmide asteca. Não requer uma zona vazia circundante.
code_128
Um código de barras linear (unidimensional), decodificáveis bidirecionalmente e autoverificável seguindo iso15417 e capaz de codificar todos os 128 caracteres do ASCII (daí o nome).
code_39
Um código de barras linear (unidimensional) de autoverificação seguindo iso16388. É um tipo de código de barras discreto e de comprimento variável.
data_matrix
Um código de barras bidimensional independente de orientação composto por módulos preto e branco dispostos em um padrão quadrado ou retangular seguindo a iso16022.
ean_13
Um código de barras linear baseado no padrão UPC-A e definido em iso15420.
ean_8
Um código de barras linear definido em iso15420 e derivado de EAN-13.
qr_code
Um código de barras bidimensional que utiliza o padrão iso18004. As informações codificadas podem ser texto, URL ou outros dados.
unknown
Este valor é usado pela plataforma para indicar que ela não sabe ou especifica qual formato de código de barras está sendo detectado ou suportado.