npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

node-quirc

v2.3.0

Published

quirc for nodejs (QR decoder)

Downloads

5,248

Readme

NPM Version Test

node-quirc

A Node.js Addon of the quirc library (QR decoder library - https://github.com/dlbeer/quirc).

installation

First, You need libpng and libjpeg (and their header files) installed. Then, simply

% npm install node-quirc

documentation

node-quirc aim to be simple to use, the module exposes a decode() function and a constants object.

decode(img[, callback])

img must be either a Buffer of a PNG or JPEG encoded image file, or a decoded image in ImageData format with 1 (grayscale), 3 (RGB) or 4 (RGBA) channels.

When callback is provided, it is expected to be a "classic" Node.js callback function, taking an error as first argument and the result as second argument. Because the provided image file may contains several QR Code, the result is always an array on success.

When decode is called only with img as argument, a Promise is returned.

const fs    = require("fs");
const quirc = require("node-quirc");

// load the image file
const img = fs.readFileSync("./test/data/Hello+World.png");

// callback version
quirc.decode(img, (err, codes) => {
    if (err) {
        // handle err.
        console.error(`decode failed: ${err.message}`);
    } else {
        // do something with codes.
        console.dir(codes);
        console.log(codes.map((code) => code.data.toString('utf8')));
    }
});

// Promise version
quirc.decode(img).then((codes) => {
    // do something with codes.
}).catch((err) => {
    // handle err.
});

// alternatively, use an already-loaded ImageData, e.g. from the `canvas` library
const context = canvas.getContext('2d');
const imageData = context.getImageData(0, 0, 800, 600);
quirc.decode(imageData).then((codes) => {
    // do something with codes.
    console.log(`codes read from ImageData (size=${
        imageData.data.length
    }, width=${imageData.width}, height=${
        imageData.height
    }):`, codes);
}).catch((err) => {
    // handle err.
});

output:

[
  {
    version: 1,
    ecc_level: 'H',
    mask: 1,
    mode: 'BYTE',
    eci: 'UTF_8',
    data: Buffer [Uint8Array] [ 72, 101, 108, 108, 111 ]
  },
  {
    version: 1,
    ecc_level: 'H',
    mask: 3,
    mode: 'BYTE',
    eci: 'UTF_8',
    data: Buffer [Uint8Array] [ 87, 111, 114, 108, 100 ]
  }
]
[ 'Hello', 'World' ]

constants

see https://github.com/kAworu/node-quirc/blob/master/index.js#L26-L56

testing

Clone the repo and then simply

% npm install && npm test

license

MIT, see LICENSE.