Skip to content

QR Code Generator Library for Java, TypeScript, JavaScript, Python, Rust, C++, C

License

Notifications You must be signed in to change notification settings

SakuraNoKisetsu/QR-Code-generator

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QR Code Generator    Badge License

A Library For A Multitude Of Languages.



Button Demo    Button Website    Button Languages



Introduction

This project aims to be the best, clearest QR
Code generator library in multiple languages.

Primary Goals

  • Flexible options
  • Absolute correctness

Secondary Goals

  • Compact implementation size
  • Good documentation comments


Languages

The library is available in multiple languages
with mostly the same amount of functionality.


Badge TypeScriptBadge JavaScript

Badge C++Badge C

Badge Python

Badge Java

Badge Rust



Features

Core

  • 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
    strings into less space than general text.


Parameters

  • Minimum / Maximum allowed version number can be
    specified, which the library will use to 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.


Advanced    Optional  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.


Check the project website for more information.



Example   Badge Java

While the code below is written in Java, the
ports to other languages are designed with
essentially the same API naming / behavior.


import java.awt.image.BufferedImage;
import java.util.List;
import java.io.File;

import javax.imageio.ImageIO;
import io.nayuki.qrcodegen.*;


//  Simple Operation

QrCode codeA = QrCode.encodeText("Hello, world!",QrCode.Ecc.MEDIUM);
BufferedImage image = toImage(codeA,4,10);
ImageIO.write(image,"png",new File("qr-code.png"));


//  Manual Operation

List<QrSegment> segments = QrSegment.makeSegments("3141592653589793238462643383");
QrCode codeB = QrCode.encodeSegments(segments,QrCode.Ecc.HIGH,5,5,2,false);

for(int y = 0;y < codeB.size;y++)
    for(int x = 0;x < codeB.size;x++){
        ...
        paint codeB.getModule(x,y)
        ...
    }

Languages

  • Java 35.0%
  • Rust 19.2%
  • C 16.2%
  • TypeScript 9.8%
  • C++ 9.1%
  • Python 8.3%
  • Other 2.4%