Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

qrious

neocotic156.6kGPL-3.04.0.2

Library for QR code generation using canvas

qr, code, encode, canvas, image

readme

 .d88888b.  8888888b.  d8b
d88P" "Y88b 888   Y88b Y8P
888     888 888    888
888     888 888   d88P 888  .d88b.  888  888 .d8888b
888     888 8888888P"  888 d88""88b 888  888 88K
888 Y8b 888 888 T88b   888 888  888 888  888 "Y8888b.
Y88b.Y8b88P 888  T88b  888 Y88..88P Y88b 888      X88
 "Y888888"  888   T88b 888  "Y88P"   "Y88888  88888P'
       Y8b

QRious is a pure JavaScript library for generating QR codes using HTML5 canvas.

Chat Demo Dev Dependency Status License Release

Install

Install using the package manager for your desired environment(s):

$ npm install --save qrious
# OR:
$ bower install --save qrious

If you want to simply download the file to be used in the browser you can find them below:

Check out node-qrious if you want to install it for use within Node.js.

Examples

<!DOCTYPE html>
<html>
  <body>
    <canvas id="qr"></canvas>

    <script src="/path/to/qrious.js"></script>
    <script>
      (function() {
        var qr = new QRious({
          element: document.getElementById('qr'),
          value: 'https://github.com/neocotic/qrious'
        });
      })();
    </script>
  </body>
</html>

Open up demo.html in your browser to play around a bit.

API

Simply create an instance of QRious and you've done most of the work. You can control many aspects of the QR code using the following fields on your instance:

Field Type Description Default Read Only
background String Background color of the QR code "white" No
backgroundAlpha Number Background alpha of the QR code 1.0 No
element Element Element to render the QR code <canvas> Yes
foreground String Foreground color of the QR code "black" No
foregroundAlpha Number Foreground alpha of the QR code 1.0 No
level String Error correction level of the QR code (L, M, Q, H) "L" No
mime String MIME type used to render the image for the QR code "image/png" No
padding Number Padding for the QR code (pixels) null (auto) No
size Number Size of the QR code (pixels) 100 No
value String Value encoded within the QR code "" No
var qr = new QRious();
qr.background = 'green';
qr.backgroundAlpha = 0.8;
qr.foreground = 'blue';
qr.foregroundAlpha = 0.8;
qr.level = 'H';
qr.padding = 25;
qr.size = 500;
qr.value = 'https://github.com/neocotic/qrious';

The QR code will automatically update when you change one of these fields, so be wary when you plan on changing lots of fields at the same time. You probably want to make a single call to set(options) instead as it will only update the QR code once:

var qr = new QRious();
qr.set({
  background: 'green',
  backgroundAlpha: 0.8,
  foreground: 'blue',
  foregroundAlpha: 0.8,
  level: 'H',
  padding: 25,
  size: 500,
  value: 'https://github.com/neocotic/qrious'
});

These can also be passed as options to the constructor itself:

var qr = new QRious({
  background: 'green',
  backgroundAlpha: 0.8,
  foreground: 'blue',
  foregroundAlpha: 0.8,
  level: 'H',
  padding: 25,
  size: 500,
  value: 'https://github.com/neocotic/qrious'
});

You can also pass in an element option to the constructor which can be used to generate the QR code using an existing DOM element, which is the only time that you can specify read only options. element must either be a <canvas> element or an <img> element which can then be accessed via the canvas or image fields on the instance respectively. An element will be created for whichever one isn't provided or for both if no element is specified, which means that they can be appended to the document at a later time.

var qr = new QRious({
  element: document.querySelector('canvas'),
  value: 'https://github.com/neocotic/qrious'
});

qr.canvas.parentNode.appendChild(qr.image);

A reference to the QRious instance is also stored on both of the elements for convenience.

var canvas = document.querySelector('canvas');
var qr = new QRious({
  element: canvas,
  value: 'https://github.com/neocotic/qrious'
});

qr === canvas.qrious;
//=> true

toDataURL([mime])

Generates a base64 encoded data URI for the QR code. If you don't specify a MIME type, it will default to the one passed to the constructor as an option or the default value for the mime option.

var qr = new QRious({
  value: 'https://github.com/neocotic/qrious'
});

qr.toDataURL();
//=> "data:image/png;base64,iVBOR...AIpqDnseH86KAAAAAElFTkSuQmCC"
qr.toDataURL('image/jpeg');
//=> "data:image/jpeg;base64,/9j/...xqAqIqgKFAAAAAq3RRQAUUUUAf/Z"

Migrating from older versions

If you've been using an older major version and would like details on what's changed and information on how to migrate to the latest major release below:

https://github.com/neocotic/qrious/wiki/Migrating-from-older-versions

Bugs

If you have any problems with QRious or would like to see changes currently in development you can do so here. Core features and issues are maintained separately here.

Contributors

If you want to contribute, you're a legend! Information on how you can do so can be found in CONTRIBUTING.md. We want your suggestions and pull requests!

A list of QRious contributors can be found in AUTHORS.md.

License

Copyright © 2017 Alasdair Mercer
Copyright © 2010 Tom Zerucha

See LICENSE.md for more information on our GPLv3 license.

changelog

Version 4.0.2, 2017.06.04

  • Correct CDNJS links in README #93

Version 4.0.1, 2017.06.04

  • Publish releases to open source CDN #87
  • Add live demo link to README #89
  • webpack - need to manually install qrious-core #90
  • Remove dependencies (non-dev) badge from README #91

Version 4.0.0, 2017.06.02

  • Split into multiple modules #53 (breaking change)
  • Remove QRious.VERSION #84 (breaking change)

Version 3.0.1, 2017.06.01

  • Correct file sizes of distribution files in README #82

Version 3.0.0, 2017.06.01

  • Reduce size of distribution files #59 (breaking change)
  • Drop support for Node.js < 4 #74 (breaking change)
  • Remove QRious.DEFAULTS #77 (breaking change)
  • Rewrite code in ES5 #81 (breaking change)

Version 2.3.0, 2017.05.31

  • Enable setting of multiple properties at once resulting in a single re-render #69
  • Deferring or avoiding ImageRenderer #71
  • Switch to container-based Travis builds for faster boot times #73
  • Change code style to be more contributor-friendly #75
  • Improve download links in README #76

Version 2.2.0, 2016.10.30

  • Add backgroundAlpha and foregroundAlpha options to control transparency #63

Version 2.1.0, 2016.10.04

  • Allow padding to be set explicitly #44
  • Fix support for older browsers #55
  • Update code style to fit with other projects
  • Update build system to run on older Node.js versions at a reduced capacity

Version 2.0.2, 2016.08.05

  • Fix bug where mask is incorrectly applied #50

Version 2.0.1, 2016.07.03

  • Correct license mentioned into README.md

Version 2.0.0, 2016.06.26

  • Rename library to QRious and move package from qr-js to qrious
  • Completely redesign API to follow OOP pattern for simplicity
  • Remove save and saveSync method
  • Remove noConflict method
  • Remove documentation generated by docco
  • Restructure code base to make it more maintainable and use Rollup to build it
  • Provide better built-in support for Browserify and Webpack etc
  • Switch from JSHint to ESLint
  • Add demo.html to allow contributors to experiment and test with changes due to lack of unit tests
  • Remove INSTALL.md and consolidate contents into README.md and CONTRIBUTING.md
  • Add EditorConfig file
  • Add support for Travis CI

Version 1.1.4, 2015.11.11

  • Fix padding issues #2
  • Make the QR code center-aligned #35
  • Update node-canvas dependency version to support Node.js v4 and above #38

Version 1.1.3, 2014.09.01

Version 1.1.2, 2014.04.27

  • Fix "too many open files" bug #20

Version 1.1.1, 2013.12.03

  • Fix bug with IIFE

Version 1.1.0, 2013.12.02

  • Fix RequireJS support #9
  • Remove Ender support #13
  • Improve code formatting and style #14
  • Support different MIME types for toDataURL and other related functions #16
  • Remove unnecessary callback arguments from synchronous functions #17
  • Make save fully asynchronous #17
  • Add saveSync for synchronous saving #17
  • Add Grunt build system #18
  • Generate source map as part of build #18
  • Improve developer documentation #18
  • Add support for Bower #19
  • Many small fixes and tweaks

Version 1.0.3, 2011.12.19

  • Rename QRCode to qr #3
  • Remove all deprecated methods #3
  • Reformat code and add additional, along with some original, code comments #4
  • Add support for Node.js, CommonJS and Ender #6
  • Add optional callback functionality to API methods #6
  • Allow data arguments to be an object or string value #7
  • Add VERSION property to the API #8
  • Add toDataURL, save and noConflict methods to the API #8
  • Now distributed under the MIT license

Version 1.0.2, 2011.08.31

  • Deprecate generateCanvas and generateImage and replaced with canvas and image respectively #1

Version 1.0.1, 2011.08.12

  • Allow customisation of colours used when rendering