• Stars
    star
    1,633
  • Rank 27,440 (Top 0.6 %)
  • Language
    JavaScript
  • License
    Apache License 2.0
  • Created about 7 years ago
  • Updated 10 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

An awesome QR code generator written in JavaScript.

Awesome-qr.js

license

An awesome but simple QR code generator written in JavaScript.

Gallery

These QR codes were made with Awesome-qr.js 🤗

Contents

Getting Started

Node.js

Type definitions are included in the npm package.

Please read ⚠️

Awesome-qr.js uses node-canvas as its drawing backend. You might need to take a look at its documentation to ensure that node-canvas works on your environment.

yarn add awesome-qr // using Yarn
npm install --save awesome-qr // using NPM

Awesome-qr.js prior to v2.0.0 does not work well in Node.js environment and Awesome-qr.js prior to v1.2.0 does not work in Node.js environment.

const { AwesomeQR } = require("awesome-qr");
const fs = require("fs");

// ...

const background = fs.readFileSync("background.png");

const buffer = await new AwesomeQR({
  text: "AwesomeQR by Makito - Awesome, right now.",
  size: 500,
  backgroundImage: background,
}).draw();

fs.writeFileSync("qrcode.png", buffer);

Browsers

⚛️   If you're using React, please use react-awesome-qr.

<!-- import to the global scope -->
<script src="dist/awesome-qr.js"></script>

<!-- or use require.js -->
<script>
  require(["dist/awesome-qr.js"], (AwesomeQR) => ...);
</script>
var background;
var reader = new FileReader();
reader.onload = function () {
  background = this.result;
  new AwesomeQR({
    text: "AwesomeQR by Makito - Awesome, right now.",
    size: 500,
    backgroundImage: background,
  }).draw().then((dataURL) => );
};
reader.readAsDataURL(file);

Options

Options is an object that you can pass to the generator to customize your QR code.

type Options = {
  text: string;
  size?: number;
  margin?: number;
  correctLevel?: number;
  maskPattern?: number;
  version?: number;
  components?: ComponentOptions;
  colorDark?: string;
  colorLight?: string;
  autoColor?: boolean;
  backgroundImage?: string | Buffer;
  backgroundDimming?: string;
  gifBackground?: ArrayBuffer;
  whiteMargin?: boolean;
  logoImage?: string | Buffer;
  logoScale?: number;
  logoMargin?: number;
  logoCornerRadius?: number;
  dotScale?: number; // DEPRECATED!!
};

text

Type string

Text to be encoded in the QR code.


size

Type number?

Default 400

Size of the QR code in pixel.


margin

Type number?

Default 20

Size of margins around the QR code body in pixel.


correctLevel

Type number?

Default QRErrorCorrectLevel.M ~> 0

For more information, please refer to Error correction feature | QRcode.com | DENSO WAVE.

Error correction level of the QR code.


maskPattern

Type number?

This is an advanced option.

Leave untouched to let the code decide which mask pattern to use.

Specify the mask pattern to be used in QR code encoding.

Accepts a value provided by QRMaskPattern.

To find out all eight mask patterns, please refer to Wikipedia File:QR_Code_Mask_Patterns.svg

For more information, please refer to Reed–Solomon codes for coders: Masking.


version

Type number?

This is an advanced option.

Leave untouched to let the code decide which version to use.

Specify the version to be used in QR code encoding.

Accepts an integer in range [1, 40].

⚠️   An error might occurs if the specified version does not have enough space for the input data.

For more information, please refer to Information capacity and versions of QR Code | QRcode.com | DENSO WAVE.


components

Type ComponentOptions

Controls the appearances of parts in the QR code.

Read section ComponentOptions to learn more.


colorDark

Type string?, CSS <color>

Default "#000000"

For more information about CSS <color>, please refer to <color> - CSS: Cascading Style Sheets | MDN

Color of the blocks on the QR code.


colorLight

Type string?, CSS <color>

Default "#ffffff"

Color of the empty areas on the QR code.


autoColor

Type boolean?

Default true

Automatically calculate the colorDark value from the QR code's background.


backgroundImage

Type (string|Buffer)?

Default undefined

Background image to be used in the QR code.

Accepts a data: string in web browsers or a Buffer in Node.js.


backgroundDimming

Type string?, CSS <color>

Default "rgba(0, 0, 0, 0)"

Color of the dimming mask above the background image.


gifBackground

Type ArrayBuffer?

Default undefined

GIF background image to be used in the QR code.


whiteMargin

Type boolean?

Default true

Use a white margin instead of a transparent one which reveals the background of the QR code on margins.


logoImage

Type (string|Buffer)?

Default undefined

Logo image to be displayed at the center of the QR code.

Accepts a data: string in web browsers or a Buffer in Node.js.

When set to undefined or null, the logo is disabled.


logoScale

Type number?

Default 0.2

Ratio of the logo size to the QR code size.


logoMargin

Type number?

Default 6

Size of margins around the logo image in pixels.


logoCornerRadius

Type number?

Default 8

Corner radius of the logo image in pixels.


dotScale (DEPRECATED)

Type number?

Default 0.4

Use components to control the scaling in a more advanced way.

This option is yet to be removed. You can still use this option to control the scaling of the QR code parts in the lagacy way.

Ratio of the real size to the full size of the blocks.

This can be helpful when you want to make more parts of the background visible.

ComponentOptions

ComponentOptions controls the appearances of parts in the QR code.

type ComponentOptions = {
  data?: {
    scale?: number;
  };
  timing?: {
    scale?: number;
    protectors?: boolean;
  };
  alignment?: {
    scale?: number;
    protectors?: boolean;
  };
  cornerAlignment?: {
    scale?: number;
    protectors?: boolean;
  };
};
// default ComponentOptions

{
  data: {
    scale: 0.4,
  },
  timing: {
    scale: 0.5,
    protectors: false,
  },
  alignment: {
    scale: 0.5,
    protectors: false,
  },
  cornerAlignment: {
    scale: 0.5,
    protectors: true,
  },
}

scale

Type number?

Scale factor for blocks in the specified area of the QR code.


protectors

Type boolean?

Controls whether or not to draw the translucent protectors under the specified area in the QR code.

Sponsors

It is those generous sponsors who supports this project makes the Awesome-qr.js more awesome!

I'd like to express my sincere appreciation to all the generous sponsors.

Since sponsors' names will not show up here without their permissions, the list above only shows a part of all the sponsors. If you wish to have your name shown up here, please feel free to contact me.

Changelog

Check the full changelog

Special thanks

Awesome-qr.js is inspired by EFQRCode by EyreFree.

EFQRCode is a tool to generate QRCode image or recognize QRCode from image, in Swift.

If your application is in need of generating pretty QR codes in Swift, take a look at EFQRCode. It should help.

AwesomeQRCode: Designed for Android

Also, if you are developing Android apps, you can take a look at AwesomeQRCode, which is designed for Android projects.

Other versions

Copyright & License

Awesome-qr.js is licensed under Apache License 2.0 License.

Copyright (c) 2017-2020 Makito

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
jquery-qrcode
Copyright (c) 2011 Jerome Etienne, http://jetienne.com

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
QRCode for JavaScript
Copyright (c) 2009 Kazuhiko Arase
URL: http://www.d-project.com/
Licensed under the MIT license:
    http://www.opensource.org/licenses/mit-license.php
The word "QR Code" is registered trademark of
DENSO WAVE INCORPORATED
    http://www.denso-wave.com/qrcode/faqpatent-e.html

More Repositories

1

AwesomeQRCode

An awesome QR code generator for Android.
Kotlin
1,866
star
2

hexo-theme-typography

Rediscover the beauty of typography.
JavaScript
629
star
3

hexo-theme-Journal

隻言片語・於此匯聚 – Moments piled up. Live demo →
CSS
293
star
4

AdvancedTextSwitcher

Advanced TextSwitcher for faster development.
Java
246
star
5

QuickKV

Lightweight & Easy-to-use Key-Value Library for Android Projects.
Java
133
star
6

AwesomeQRCode-Kotlin

AwesomeQRCode in Kotlin.
Kotlin
61
star
7

GitPro

Use GitHub Like a Pro
CSS
36
star
8

A-star

A*(A-star) pathfinding algorithm in C++
C++
30
star
9

RhythmView

Kotlin
27
star
10

DroidCurvesView

A custom view for Android inspired by Curves Tool in Photoshop.
Java
27
star
11

NeteaseCloudMusic-Now-Playing

C
25
star
12

ReinaDownloader

Multi-thread & Multi-task downloading library for Android projects.
Java
21
star
13

Chrome-GitHub-Feed-Moderator

CSS
10
star
14

BiliNyan-Android

一个 Material Design 风格的第三方哔哩哔哩 Android 客户端
Java
10
star
15

webpxmux.js

A JavaScript library for muxing and demuxing animated WebP images and encoding and decoding WebP images.
JavaScript
10
star
16

Chrome-qwq

The naughtiest qwq that you have never ever seen before.
JavaScript
7
star
17

MaglevIO

An easy-to-use and efficient Java I/O library. Based on Java NativeIO.
Java
4
star
18

raft

An implementation of the Raft distributed consensus algorithm in Go.
Go
4
star
19

chocola-js

4
star
20

Stacktodo

A todo list* powered by React.js, Django and PostgreSQL. (*demo)
JavaScript
4
star
21

sumimakito

3
star
22

HimitsuQR

加密二维码,让二维码更安全。
Java
3
star
23

Decompiled-Chongcai

#Abandoned
3
star
24

apple-watch-rgb

RGB light for your 🎃 (maybe)
Swift
2
star
25

Naive-Solver-for-Word-Guessing-Games

A general but naïve solver for word guessing games.
Python
2
star
26

hexo-renderer-pejs

PEJS renderer for Hexo
1
star
27

Sandcastle-Quality-Tracker

1
star
28

BuildMaid-CI-Test-Android

Kotlin
1
star
29

Apple-Watch-RGB

RGB light for your 🎃 (maybe)
Swift
1
star
30

ffmpeg-dmx4a

Modified version of FFmpeg which is used in DMX4A, the core of Bilisound.
1
star
31

TiebaEmailExtractor

Extract email addresses easily.
Java
1
star
32

uTickets

TypeScript
1
star
33

sssniff

ShadowSocks(SS) traffic sniffer
Python
1
star
34

EFEFDouga

二匚二匚動画です
HTML
1
star