• Stars
    star
    4,730
  • Rank 8,485 (Top 0.2 %)
  • Language
    Java
  • Created about 8 years ago
  • Updated 3 months ago

Reviews

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

Repository Details

High-quality QR Code generator library in Java, TypeScript/JavaScript, Python, Rust, C++, C.

QR Code generator library

Introduction

This project aims to be the best, clearest QR Code generator library in multiple languages. The primary goals are flexible options and absolute correctness. Secondary goals are compact implementation size and good documentation comments.

Home page with live JavaScript demo, extensive descriptions, and competitor comparisons: https://www.nayuki.io/page/qr-code-generator-library

Features

Core features:

  • Available in 6 programming languages, all with nearly equal functionality: Java, TypeScript/JavaScript, Python, Rust, C++, C
  • Significantly shorter code but more documentation comments compared to competing libraries
  • Supports encoding all 40 versions (sizes) and all 4 error correction levels, as per the QR Code Model 2 standard
  • Output format: Raw modules/pixels of the QR symbol
  • Detects finder-like penalty patterns more accurately than other implementations
  • Encodes numeric and special-alphanumeric text in less space than general text
  • Open-source code under the permissive MIT License

Manual parameters:

  • User can specify minimum and maximum version numbers allowed, then library will automatically choose smallest version in the range that fits the data
  • User can specify mask pattern manually, otherwise library will automatically evaluate all 8 masks and select the optimal one
  • User can specify absolute error correction level, or allow the library to boost it if it doesn't increase the version number
  • User can create a list of data segments manually and add ECI segments

Optional advanced features (Java only):

  • Encodes Japanese Unicode text in kanji mode to save a lot of space compared to UTF-8 bytes
  • Computes optimal segment mode switching for text with mixed numeric/alphanumeric/general/kanji parts

More information about QR Code technology and this library's design can be found on the project home page.

Examples

The code below is in Java, but the other language ports are designed with essentially the same API naming and behavior.

import java.awt.image.BufferedImage;
import java.io.File;
import java.util.List;
import javax.imageio.ImageIO;
import io.nayuki.qrcodegen.*;

// Simple operation
QrCode qr0 = QrCode.encodeText("Hello, world!", QrCode.Ecc.MEDIUM);
BufferedImage img = toImage(qr0, 4, 10);  // See QrCodeGeneratorDemo
ImageIO.write(img, "png", new File("qr-code.png"));

// Manual operation
List<QrSegment> segs = QrSegment.makeSegments("3141592653589793238462643383");
QrCode qr1 = QrCode.encodeSegments(segs, QrCode.Ecc.HIGH, 5, 5, 2, false);
for (int y = 0; y < qr1.size; y++) {
    for (int x = 0; x < qr1.size; x++) {
        (... paint qr1.getModule(x, y) ...)
    }
}

License

Copyright © 2022 Project Nayuki. (MIT License)
https://www.nayuki.io/page/qr-code-generator-library

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.

More Repositories

1

Project-Euler-solutions

Runnable code for solving Project Euler problems in Java, Python, Mathematica, Haskell.
Java
1,831
star
2

Reference-arithmetic-coding

Clear implementation of arithmetic coding for educational purposes in Java, Python, C++.
Java
340
star
3

Reference-Huffman-coding

Clear implementation of Huffman coding for educational purposes in Java, Python, C++.
Java
246
star
4

Nayuki-web-published-code

Complete collection of code files (*.java/js/py/cpp/etc.) published on Project Nayuki website.
Java
135
star
5

Bitcoin-Cryptography-Library

Nayuki's implementation of cryptographic primitives used in Bitcoin.
C++
127
star
6

Simple-DEFLATE-decompressor

Simple compliant DEFLATE decompressor in Java, Python, C++, TypeScript.
Java
70
star
7

FLAC-library-Java

FLAC decoder library in Java.
Java
64
star
8

Fast-QR-Code-generator

This project moved
Java
39
star
9

Relational-File-System

https://www.nayuki.io/page/designing-better-file-organization-around-tags-not-hierarchies
38
star
10

Sorting-algorithms-demo

Animated demo of sorting algorithms in Java.
Java
35
star
11

PNG-library

Easy, safe, flexible Java library to decode and encode PNG image files
Java
28
star
12

Native-hashes-for-Java

Hash functions implemented in C and x86 asm, callable from Java through JNI.
Java
26
star
13

NetPerSec

Nayuki's updated version of NetPerSec.
C++
26
star
14

Tablet-desk-clock

Software for displaying a clock on a tablet.
Python
25
star
15

BMP-IO

BMP file reader&writer library in Java.
Java
21
star
16

Git-library-Java

Low-level Java library to read/write Git repositories.
Java
17
star
17

x86-Assembler

My crappy x86 assembler written in Java.
Java
16
star
18

Pervasive-Displays-epaper-driver

Hardware driver for Pervasive Displays' e-paper panels.
C++
16
star
19

MamIRC

Use at your own risk.
Java
16
star
20

DWITE-programming-contest-solutions

Java solution programs, problem statements, and test input/output files.
HTML
14
star
21

DEFLATE-library-Java

Efficient DEFLATE compressor and decompressor in pure Java.
Java
14
star
22

JSON-library-Java

JSON parser and serializer in Java.
Java
8
star
23

Project79068-Cryptography-Library

Hash functions and ciphers implemented in Java.
Java
7
star
24

Macshift

C++
5
star
25

CSC258-computer-debugger

CSC258 computer debugger.
Java
4
star
26

pngcheck-unstable

A fork of http://www.libpng.org/pub/png/apps/pngcheck.html
C
2
star