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

A pure JavaScript QRCode encode and decode library.

NotificationsYou must be signed in to change notification settings

nuintun/qrcode

Repository files navigation

A pure JavaScript QRCode encode and decode library.

NPM VersionDownload StatusLanguages StatusTree ShakeableSide EffectLicense

QRCode guide and example

QRCode guide

QRCode encode example

QRCode decode example

Usage

Common Interface
exportclassCharset{publicstaticreadonlyCP437:Charset;publicstaticreadonlyISO_8859_1:Charset;publicstaticreadonlyISO_8859_2:Charset;publicstaticreadonlyISO_8859_3:Charset;publicstaticreadonlyISO_8859_4:Charset;publicstaticreadonlyISO_8859_5:Charset;publicstaticreadonlyISO_8859_6:Charset;publicstaticreadonlyISO_8859_7:Charset;publicstaticreadonlyISO_8859_8:Charset;publicstaticreadonlyISO_8859_9:Charset;publicstaticreadonlyISO_8859_10:Charset;publicstaticreadonlyISO_8859_11:Charset;publicstaticreadonlyISO_8859_13:Charset;publicstaticreadonlyISO_8859_14:Charset;publicstaticreadonlyISO_8859_15:Charset;publicstaticreadonlyISO_8859_16:Charset;publicstaticreadonlySHIFT_JIS:Charset;publicstaticreadonlyCP1250:Charset;publicstaticreadonlyCP1251:Charset;publicstaticreadonlyCP1252:Charset;publicstaticreadonlyCP1256:Charset;publicstaticreadonlyUTF_16BE:Charset;publicstaticreadonlyUTF_8:Charset;publicstaticreadonlyASCII:Charset;publicstaticreadonlyBIG5:Charset;publicstaticreadonlyGB2312:Charset;publicstaticreadonlyEUC_KR:Charset;publicstaticreadonlyGBK:Charset;publicstaticreadonlyGB18030:Charset;publicstaticreadonlyUTF_16LE:Charset;publicstaticreadonlyUTF_32BE:Charset;publicstaticreadonlyUTF_32LE:Charset;publicstaticreadonlyISO_646_INV:Charset;publicstaticreadonlyBINARY:Charset;publicconstructor(label:string, ...values:number[]);}declaretypeFNC1=[mode:'GS1']|[mode:'AIM',indicator:number];
Encoder Interface
exportclassAlphanumeric{publicconstructor(content:string);}exportclassByte{publicconstructor(content:string,charset?:Charset);}exportclassHanzi{publicconstructor(content:string);}exportclassKanji{publicconstructor(content:string);}exportclassNumeric{publicconstructor(content:string);}exportinterfaceEncoderOptions{hints?:{fnc1?:FNC1};version?:'Auto'|number;level?:'L'|'M'|'Q'|'H';encode?:(content:string,charset:Charset)=>Uint8Array;}declareinterfaceDataURLOptions{margin?:number;foreground?:[R:number,G:number,B:number];background?:[R:number,G:number,B:number];}exportclassEncoded{publicsize:number;publicmask:number;publiclevel:string;publicversion:number;publicget(x:number,y:number):number;publictoDataURL(moduleSize:number,options?:DataURLOptions):string;}exportclassEncoder{publicconstructor(options?:EncoderOptions);publicencode(...segments:(Alphanumeric|Byte|Hanzi|Kanji|Numeric)[]):Encoded;}
Encoder Example
import{Byte,Encoder,Hanzi,Kanji}from'@nuintun/qrcode';constencoder=newEncoder({level:'H'});constqrcode=encoder.encode(// HanzinewHanzi('你好世界'),// BytenewByte('\nhello world\n'),// KanjinewKanji('こんにちは世界'));console.log(qrcode.toDataURL());
Decoder Interface
exportclassBitMatrix{publicconstructor(width:number,height:number,bits?:Int32Array);publicgetwidth():number;publicgetheight():number;publicset(x:number,y:number):void;publicget(x:number,y:number):number;publicflip():void;publicflip(x:number,y:number):void;publicclone():BitMatrix;publicsetRegion(left:number,top:number,width:number,height:number):void;}exportclassPoint{publicgetx():number;publicgety():number;}exportclassPatternextendsPoint{publicgetmoduleSize():number;}declareclassFinderPatternGroup{publicgettopLeft():Pattern;publicgettopRight():Pattern;publicgetbottomLeft():Pattern;}exportclassDetected{publicgetmatrix():BitMatrix;publicgetfinder():FinderPatternGroup;publicgetalignment():Pattern|undefined;publicgetsize():number;publicgetmoduleSize():number;publicmapping(x:number,y:number):Point;}declareinterfaceStructured{readonlyindex:number;readonlycount:number;readonlyparity:number;}exportclassDecoded{publicgetmask():number;publicgetlevel():string;publicgetversion():number;publicgetmirror():boolean;publicgetcontent():string;publicgetcorrected():number;publicgetsymbology():string;publicgetfnc1():FNC1|false;publicgetcodewords():Uint8Array;publicgetstructured():Structured|false;}exportfunctiongrayscale(imageData:ImageData):Uint8Array;exportfunctionbinarize(luminances:Uint8Array,width:number,height:number):BitMatrix;exportinterfaceDetectorOptions{strict?:boolean;}exportclassDetector{publicconstructor(options?:DetectorOptions);publicdetect(binarized:BitMatrix):Generator<Detected,void,boolean>;}exportinterfaceDecoderOptions{decode?:(bytes:Uint8Array,charset:Charset)=>string;}exportclassDecoder{publicconstructor(options?:DecoderOptions);publicdecode(matrix:BitMatrix):Decoded;}
Decoder Example
import{binarize,Decoder,Detector,grayscale}from'@nuintun/qrcode';constimage=newImage();image.crossOrigin='anonymous';image.addEventListener('error',()=>{console.error('image load error');});image.addEventListener('load',()=>{const{ width, height}=image;constcanvas=newOffscreenCanvas(width,height);constcontext=canvas.getContext('2d')!;context.drawImage(image,0,0);constluminances=grayscale(context.getImageData(0,0,width,height));constbinarized=binarize(luminances,width,height);constdetector=newDetector();// Notice: the detect result are possible combinations of QR Code regions,// which may not necessarily be successfully decoded.constdetected=detector.detect(binarized);constdecoder=newDecoder();letcurrent=detected.next();while(!current.done){letsucceed=false;constdetect=current.value;try{const{ size, finder, alignment}=detect;constdecoded=decoder.decode(detect.matrix);// Finderconst{ topLeft, topRight, bottomLeft}=finder;// CornersconsttopLeftCorner=detect.mapping(0,0);consttopRightCorner=detect.mapping(size,0);constbottomRightCorner=detect.mapping(size,size);constbottomLeftCorner=detect.mapping(0,size);// TimingconsttopLeftTiming=detect.mapping(6.5,6.5);consttopRightTiming=detect.mapping(size-6.5,6.5);constbottomLeftTiming=detect.mapping(6.5,size-6.5);console.log({content:decoded.content,finder:[topLeft,topRight,bottomLeft],alignment:alignment ?alignment :null,timing:[topLeftTiming,topRightTiming,bottomLeftTiming],corners:[topLeftCorner,topRightCorner,bottomRightCorner,bottomLeftCorner]});succeed=true;}catch{// Decode failed, skipping...}// Notice: pass succeed to next() is very important,// this can significantly reduce the number of detections.current=detected.next(succeed);}});image.src='https://nuintun.github.io/qrcode/public/images/qrcode.jpg';

Links

zxing/zxing

zxing-cpp/zxing-cpp


[8]ページ先頭

©2009-2025 Movatter.jp