Published
Edited
Jan 11, 2020
1 fork
Insert cell
md`# QR Scan`
Insert cell
ZXing = require("https://unpkg.com/@zxing/library@latest")
Insert cell
Insert cell
{
let selectedDeviceId;
const codeReader = new ZXing.BrowserMultiFormatReader()
console.log('ZXing code reader initialized')
codeReader.getVideoInputDevices()
.then((videoInputDevices) => {
const sourceSelect = document.getElementById('sourceSelect')
selectedDeviceId = videoInputDevices[0].deviceId
if (videoInputDevices.length >= 1) {
videoInputDevices.forEach((element) => {
const sourceOption = document.createElement('option')
sourceOption.text = element.label
sourceOption.value = element.deviceId
sourceSelect.appendChild(sourceOption)
})

sourceSelect.onchange = () => {
selectedDeviceId = sourceSelect.value;
};

const sourceSelectPanel = document.getElementById('sourceSelectPanel')
sourceSelectPanel.style.display = 'block'
}

document.getElementById('startButton').addEventListener('click', () => {
document.getElementById('result2').textContent = '';
codeReader.decodeFromVideoDevice(selectedDeviceId, 'video', (result, err) => {
if (result) {
console.log(result)
document.getElementById('result').textContent = result.text
const codeWriter = new ZXing.BrowserQRCodeSvgWriter();
// you can get a SVG element.
codeWriter.writeToDom('#result2', result.text, 300, 300);
}
if (err && !(err instanceof ZXing.NotFoundException)) {
console.error(err)
document.getElementById('result').textContent = err
}
})
console.log(`Started continous decode from camera with id ${selectedDeviceId}`)
})

document.getElementById('resetButton').addEventListener('click', () => {
codeReader.reset()
document.getElementById('result').textContent = '';
document.getElementById('result2').textContent = '';
console.log('Reset.')
})

})
.catch((err) => {
console.error(err)
})
}
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more