- Notifications
You must be signed in to change notification settings - Fork28
QR/bar code scanner for the Browser
License
NotificationsYou must be signed in to change notification settings
maslick/koder
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
🚀 NEW: Check OutKameroon - QR/Bar Code Scanner as a Service 🚀
QR/bar code scanner for the Browser
- QR/barcode module implemented in WebAssembly
- Barcode support (ISBN, UPC-A, UPC-E, EAN-8, EAN-13, I25, ITF-14, CODE-128, CODE-39, CODE-93, CODABAR, DATABAR)
- Uses Zbar C++ library (version0.23.90)
- Packaged as PWA (caching files with Service Worker, Add to Home Screen)
- Mobile first (can be used on a Laptop as well)
- Multiplatform (iOS, Android, Desktop)
- QR/bar code recognition logic is performed off the browser's Main thread (i.e. Web Worker)
- koder React component supports ajsqr based Web Worker (seejsQrWorker.js)
- Emscripten-zbar-sdkDocker image based on
emscripten/emsdk
,Dockerfile - ReactJScomponent
- Vanilla JSexample
- 🆕 Turn on/off the beep sound
- 🆕 Support for UPN QR (Slovenia only)
- 🆕 EU Digital Covid Certificate validator (vaccination, test), works in
offline
mode! - 🆕 Emscripten v3.1.1
- 🆕 npm package
npm install --global yarnyarn install --frozen-lockfile
npm run startopen https://locahost:8080
npm run build# -> build React app into ./publicnpm run prod# -> serve static web app on port 8082open http://localhost:8082
npm install @maslick/koder
// CommonJSconstKoder=require('@maslick/koder');// ES6 modulesimportKoderfrom'@maslick/koder';
constKoder=require('@maslick/koder');const{loadImage, createCanvas}=require("canvas");constgetImageData=async(src)=>{constimg=awaitloadImage(src);constcanvas=createCanvas(img.width,img.height);constctx=canvas.getContext('2d');ctx.drawImage(img,0,0);return{data:ctx.getImageData(0,0,img.width,img.height).data,width:img.width,height:img.height};};(async()=>{consturl='https://raw.githubusercontent.com/maslick/koder/master/screenshots/app_1.png';constkoder=awaitnewKoder().initialized;const{data, width, height}=awaitgetImageData(url);constt0=newDate().getTime();constres=koder.decode(data,width,height);constt1=newDate().getTime();console.log(`Scanned in${t1-t0} ms`);// Scanned in 7 msconsole.log(res);// http://en.m.wikipedia.org})();
docker pull maslick/emscripten-zbar-sdkdocker build -t maslick/emscripten-zbar-sdk -f docker/Dockerfile docker
# Linux, Mac Inteldocker run \ -e INPUT_FILE=zbar/qr.cpp \ -e OUTPUT_FILE=zbar \ -e OUTPUT_DIR=public/wasm \ -v$(pwd):/app \ maslick/emscripten-zbar-sdk make -B# Mac M1/M2docker run \ --platform linux/amd64 \ -e INPUT_FILE=zbar/qr.cpp \ -e OUTPUT_FILE=zbar \ -e OUTPUT_DIR=public/wasm \ -v$(pwd):/app \ maslick/emscripten-zbar-sdk make -B
OUTPUT_DIR=public/wasm OUTPUT_FILE=zbar make clean
About
QR/bar code scanner for the Browser