qrcode creator based on node-canvas and qr.js
JavaScript
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
test
.gitignore
.npmignore
.travis.yml
LICENSE
README.md
index.js
package.json

README.md

canvas-qr

Build Status

qrcode creator based on node-canvas and qr-js

important: install Cairo first

install Cairo first, For system-specific installation view the Wiki from node-canvas

features

  • return canvas object, use buffer or stream is your choice
  • 5 layers at most: base background, background color, background image, qrcode, logo image

install

npm i canvas-qr

use

var 
assert = require('assert')
,cq = require('canvas-qr')
,qr = cq.qr
,fs = require('fs')
,co = require('co')
,Canvas = cq.Canvas
,Image = Canvas.Image

function* t1() {

    var bgImageFile = fs.readFileSync('test/bg.jpg')
    var bgImage = new Image()
    var logoImageFile = fs.readFileSync('test/q-logo.png')
    var logoImage = new Image()

    var cvs

    bgImage.src = bgImageFile
    logoImage.src = logoImageFile

    cvs = qr({
        baseColor: '#fff' //canvas base color, all other images draw on this base
        ,backgroundImage: bgImage //canvas Image Object as background
        ,backgroundColor: null //background color String, such as 'rgba(255,255,255,.6)' or '#fff'
        ,size: 200 //image size, pix
        ,border: 0.04 // border widrth = size * border
        ,str: 'hello world' //string to encode to qr, must have this, all other params is optional
        ,forgroundColor: '#000' //forgroundColor String
        ,logoImage: logoImage //canvas Image Object as logo
        ,logoWidth: 40
        ,logoHeight: 40
        ,ecc: 'M' //ecc level, [ 'L', 'M', 'Q', 'H' ]
    })

    return new Promise(function(resolve, reject) {
        cvs.toBuffer(function(err, buf) {
            if(err) reject(err)
            else resolve buf
        })
    })

}

//for koa, use stream
app.get('/qr-image', function* (next) {

    var bgImageFile = fs.readFileSync('test/bg.jpg')
    var bgImage = new Image()
    var logoImageFile = fs.readFileSync('test/q-logo.png')
    var logoImage = new Image()

    bgImage.src = bgImageFile
    logoImage.src = logoImageFile

    var png = yield t1()
    this.type = '.png'
    this.body =png

})


//for express, use pngData
app.get('/qr-image', function* (req, res) {

    co(t1())
    .then(function(buf) {
        res.end(buf)
    })

})

changelog

  • 0.2.0 use canvas 1.3.15
  • 0.1.3 use canvas 1.2.9 compatible with node v4
  • 0.1.1 change licence to MIT, fix readme dependency
  • 0.0.4 set default ecc level = 'M'
  • 0.0.3 just change readme, nothing else

LICENSE

MIT