nbis-wrapper-js
v0.3.0
Published
Node.js wrappers for NBIS 5.0.0 binaries
Maintainers
Readme
nbis-wrapper-js
Node.js wrappers for NBIS 5.0.0 binaries.
This package bundles NBIS binaries and runtime data for macOS arm64 and exposes them as TypeScript-friendly classes.
Install
npm install nbis-wrapper-jsPlatform Support
- macOS (darwin) arm64
- Linux x86_64
Usage
import { Mindtct, Bozorth3, Nfiq } from 'nbis-wrapper-js';
const mindtct = new Mindtct();
const bozorth3 = new Bozorth3();
const nfiq = new Nfiq();
// Minutiae extraction
mindtct.detect('sample.wsq', 'out/sample', { enhanceLowContrast: true });
// Match two xyt files
const match = bozorth3.matchPair('out/a.xyt', 'out/b.xyt', { m1: false });
console.log(match.results);
// Quality score
const score = nfiq.score('sample.wsq');
console.log(score.scores);Stream IO (optional)
For file-based commands, async *Stream methods accept a stream or buffer and use
temporary files under the hood. Outputs can be returned as a buffer or piped to a
stream.
Most wrappers that take file paths now have *Stream counterparts. Commands with
multiple outputs (e.g., mindtct) return an outputBuffers map unless you provide
per-output streams. mindtct.detectStream only returns buffers when outputToBuffer
is set.
Stream inputs also accept inputName/inputExtension (for tools that infer format
from filenames). For Bozorth3, you can pass { input, label } to keep stable
probe/gallery identifiers in results.
Image Auto-Convert (default on)
Mindtct and Nfiq can auto-convert PNG/JPEG inputs into WSQ before invoking NBIS.
This is enabled by default and can be disabled via the constructor.
import { Mindtct } from 'nbis-wrapper-js';
const mindtct = new Mindtct({ autoConvert: false });
// Or tune WSQ conversion:
const tuned = new Mindtct({
autoConvert: {
wsqBitrate: 0.75,
ppi: 500,
upscale: { enabled: true, minSize: 256 }
}
});import fs from 'fs';
import { Cwsq } from 'nbis-wrapper-js';
const cwsq = new Cwsq();
const inputStream = fs.createReadStream('sample.raw');
const result = await cwsq.compressStream(0.75, 'wsq', inputStream, {
rawIn: { width: 500, height: 500, depth: 8 },
output: fs.createWriteStream('out.wsq')
});
// Or return a buffer instead of piping:
const { outputBuffer } = await cwsq.compressStream(0.75, 'wsq', inputStream, {
rawIn: { width: 500, height: 500, depth: 8 },
outputToBuffer: true
});API Overview
Fingerprint
Mindtctversion()detect(fingerImagePath, outputRoot, options)
Bozorth3version()matchPair(...)matchMatesList(...)matchProbeList(...)matchGalleryList(...)matchWithFixedProbe(...)matchWithFixedProbeList(...)matchWithFixedGallery(...)matchWithFixedGalleryList(...)
Nfiqversion()score(imagePath, options)
WSQ
Cwsq/DwsqRdwsqcom/Wrwsqcom
JPEG/JPEG2000
Cjpeg/DjpegCjpegb/DjpegbCjpegl/DjpeglJpegtranCjp2k/Djp2kRdjpgcom/Wrjpgcom
Color/Interleave Helpers
Rgb2ycc/Ycc2rgbIntr2not/Not2intr
ANSI/NIST Tools
An2kToolChkan2kDatainfo
Notes
- Binaries are invoked directly; NBIS runtime data is bundled and set via
NBIS. - Some IJG/OpenJPEG tools do not exit with
-versioncleanly; the wrapper returns their help output forversion().
Development
npm install
npm run build
npm run testLicense
Unlicense (see package.json).
