qrlite
v1.1.0
Published
QRLite is QRCode(8bit mode) generator written in TypeScript only.
Downloads
3
Readme
QRLite
QRLite is QRCode(8bit mode) generator written in TypeScript only.
QRlite can output QRLite bitmap canvas, text, and Monochrome bitmap.
Install
npm i qrlite
Sample
Output Bitmap(Node.js sample)
const QRLite = require( 'qrlite' );
function OutputBitmapFile( name, canvas, frame ) {
if ( frame === undefined ) { frame = 4; }
var fs = require('fs');
var buf = Buffer.from( canvas.outputBitmapByte( frame ) );
fs.writeFileSync( name, buf );
}
OutputBitmapFile( 'test.bmp', QRLite.convert( 'test' ) );
Browser sample
<script src="./qrlite.js"></script>
<script>console.log(QRLite);</script>
QRCode WebComponents(Browser sample2)
https://github.com/HirokiMiyaoka/QRCodeComponent
QRCodeComponent is QRCode generate and draw Webcomponents uses QRLite.
TypeScript sample
import * as QRLite from 'qrlite';
Debug
const qr = new QRLite.Generator();
// Set level.
qr.setLevel( 'Q' );
// Set data.
qr.setData( 'test' );
// datacode[ 0 ] = Data block, datacode[ 1 ] = EC Block
const datacode = qr.createDataCode();
// Raw QR Code.
qr.drawData( datacode[ 0 ], datacode[ 1 ] );
const rawcanvas = qr.get();
// Get masked canvases.(masked[ 0-7 ] = QRLite.Canvas)
const masked = qr.createMaskedQRCode();
// Print QRCode points.
// console.log( qr.evaluateQRCode( masked ) );
// Select mask number.
const masknum = qr.selectQRCode( masked );
// QR Code.
const canvas = masked[ masknum ];
// Output to console.
canvas.print();
Black = 1
or true
, White = 0
or false
.
QRLite.convert(data: string, option: QRLiteConvertOption): QRLiteBitCanvas
type QRLiteLevel = 'L' | 'M' | 'Q' | 'H';
interface QRLiteConvertOption {
level?: QRLiteLevel;
version?: number;
mask?: number;
}
QRLite.Generator
convert(datastr: string, option?: QRLiteConvertOption): QRLiteBitCanvas
get(): QRLiteBitCanvas
getLevel(): QRLiteLevel
setLevel(level: QRLiteLevel): QRLiteLevel
getVersion() => number
setRating(rating?: QRLiteRating): void
interface QRLiteRating {
calc: (canvas: QRLiteBitCanvas) => number;
}
setData( data: string | Uint8Array ) => UInt8Array
createDataCode() => [ 0: UInt8Array, 1: UInt8Array ]
[ 0 ] ... Data code
[ 1 ] ... EC code.
drawData( data: Uint8Array, ec: Uint8Array )
createMaskedQRCode(): QRLiteBitCanvas[]
Return masked QR code.
Mask has 8 types.
selectQRCode(qrcodes: QRLiteBitCanvas[]): number
evaluateQRCode(qrcodes: QRLiteBitCanvas[]): number[]
QRLiteBitCanvas
clone() => QRLite.BitCanvas
getPixel( x: number, y: number ) => boolean|undefined
getPixels() => <boolean|undefined>[]
drawPixel( x: number, y: number, black: boolean ) => this
reverse( func: ( i: number, j: number ) => boolean, mask: boolean[] ) => this
isTransparentPixel( x: number, y: number ) => boolean
drawQRByte( byte: Uint8Array, cursor?: { x: number, y: number, up: boolean, right: boolean } ) => { x: number, y: number, up: boolean, right: boolean }
sprint( option?: { white?: string, black?: string, none?: string, newline?: string } )
print( white: string = '██', black: string = ' ', none: string = '--' )
outputBitmapByte( frame: number = 4 ) => number[]
Write code Buffer.from( canvas.outputBitmapByte( frame ) )
if you want to get Buffer.
Test
Build
npm run build
Run
All test.
npm run test
Options.
npm run test -- OPTION FILES...
- OPTION
--binary
-b
- Binary mode.
--debug
-d
- Text mode.
- FILES
- Set test dir.
npm run test -- 0000_1_H
- Set test dir.
Add
Base
test/
NNNN_VERSION_LEVEL/ ... Test case
test.txt ... QRCode text.
sample.png ... Sample for human.
sample.bmp ... Binary mode sample.
sample.txt ... Text mode sample.
- NNNN
- Test number. Start
0000
.
- Test number. Start
- VERSION
- QRCode version. (
1
~40
)
- QRCode version. (
- LEVEL
- QRCode level. (
L
M
Q
H
)
- QRCode level. (
- test.txt
- QRCode data.
- sample.png
- Only sample.
Binary
Binary mode test use Microsoft monochrome bitmap.
You create min QRCode and rename sample.bmp
.
Text
Text mode test use sample.txt
.
This answer set White = [
], Black = [██
].