Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

QR/bar code scanner for the Browser

License

NotificationsYou must be signed in to change notification settings

maslick/koder

Repository files navigation

🚀 NEW: Check OutKameroon - QR/Bar Code Scanner as a Service 🚀

=koder=

QR/bar code scanner for the Browser

npmBuild StatusLicense: MIT

💡 Demo

https://koder-prod.web.app

🚀 Features

  • 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 onemscripten/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 inoffline mode!
  • 🆕 Emscripten v3.1.1
  • 🆕 npm package

⚡ Usage

Install dependencies

npm install --global yarnyarn install --frozen-lockfile

Run React app

npm run startopen https://locahost:8080

Productionize

npm run build# -> build React app into ./publicnpm run prod# -> serve static web app on port 8082open http://localhost:8082

⚡ NPM module

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})();

♠️ Development

Fetch or build the Builder image

docker pull maslick/emscripten-zbar-sdkdocker build -t maslick/emscripten-zbar-sdk -f docker/Dockerfile docker

Build WASM artifacts

# 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

Clean the build artifacts (if necessary):

OUTPUT_DIR=public/wasm OUTPUT_FILE=zbar make clean

🔭 References


[8]ページ先頭

©2009-2025 Movatter.jp