# QR Code Generator    [![Badge License]][License] *A Library For A Multitude Of Languages.*

--- [![Button Demo]][Demo]    [![Button Website]][Website]    [![Button Languages]][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 TypeScript]][TypeScript]  [![Badge JavaScript]][Javascript]  [![Badge C++]][C++]  [![Badge C]][C]  [![Badge Python]][Python]  [![Badge Java]][Java]  [![Badge Rust]][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]][Java Demo] While the code below is written in Java, the
ports to other languages are designed with
essentially the same API naming / behavior.
```Java 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 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) ... } ```
[Website]: https://www.nayuki.io/page/qr-code-generator-library [Demo]: https://www.nayuki.io/page/qr-code-generator-library#live-demo-javascript [Languages]: #Languages 'Language Selection' [Java Demo]: java/QrCodeGeneratorDemo.java 'Java Example' [License]: LICENSE [TypeScript]: typescript-javascript 'TypeScript Overview' [JavaScript]: typescript-javascript 'JavaScript Overview' [Python]: python 'Python Overview' [Java]: java 'Java Overview' [Rust]: rust 'Rust Overview' [C++]: cpp 'C++ Overview' [C]: c 'C Overview' [Badge License]: https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge [Badge TypeScript]: https://img.shields.io/badge/TypeScript-3178C6?style=for-the-badge&logoColor=white&logo=TypeScript [Badge JavaScript]: https://img.shields.io/badge/JavaScript-cfbb1b?style=for-the-badge&logoColor=white&logo=JavaScript [Badge Python]: https://img.shields.io/badge/Python-3776AB?style=for-the-badge&logoColor=white&logo=Python [Badge Rust]: https://img.shields.io/badge/Rust-f44a00?style=for-the-badge&logoColor=white&logo=Rust [Badge Java]: https://img.shields.io/badge/Java-c00711?style=for-the-badge&logoColor=white&logo=CoffeeScript [Badge C++]: https://img.shields.io/badge/C++-00599C?style=for-the-badge&logoColor=white&logo=CPlusPlus [Badge C]: https://img.shields.io/badge/C-999999?style=for-the-badge&logoColor=white&logo=C [Button Languages]: https://img.shields.io/badge/Languages-A22846?style=for-the-badge&logoColor=white&logo=ROS [Button Website]: https://img.shields.io/badge/Website-4298B8?style=for-the-badge&logoColor=white&logo=Apostrophe [Button Demo]: https://img.shields.io/badge/Demo-006600?style=for-the-badge&logoColor=white&logo=AppleArcade