Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

qrean

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

qrean

A portable QR and Barcode generation / manipulation library written in C

  • 0.1.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

QR and Barcode library libqrean

What's this?

A portable QR and Barcode generation / manipulation library written in C.

animation rmqr-animation

DEMO

Wasm (thanks @taisukef)

CLI Usage

Generation

% qrean -t rmqr Hello
███████████████████████████████
██ ▄▄▄▄▄ █ ▀ █ █ █▄█ █▄█▄█▄▄ ██
██ █   █ ██▄ ▄█▀▄▄  ▄▄   ▀█ ▄██
██ █▄▄▄█ ██▀▀▀▄█▄▄█▀█▄   █▀▀▄██
██▄▄▄▄▄▄▄█▄██ ▄ ▀▄█▀▀█▀▄ ▄▄▄ ██
██ ▄▀▀ ▀▄ ▄█▄███▀▀▄▄▀▄▀▄ █▄█ ██
██▄▄▄█▄█▄█▄█▄█▄█▄█▄█▄█▄█▄▄▄▄▄██
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
% qrean -t mQR Hello > mqr.png     # CAVEAT: Outputs PNG stream for not a tty
% qrean -o qr.png Hello            # You can also specify output filename
% qrean -h
Usage: qrean [OPTION]... [STRING]
Generate QR/Barcode image

  General options:
    -h                Display this help
    -o FILENAME       Image save as FILENAME
    -i FILENAME       Data read from FILENAME
    -f FORMAT         Output format, one of the following:
                          TXT    (default for tty)
                          PNG    (default for non tty)
                          PPM
    -t CODE           Output CODE, one of the following:
                          QR, mQR, rMQR, tQR
                          EAN13, EAN8, UPCA
                          CODE39, CODE93
                          ITF, NW7
    -p PADDING        Comma-separated PADDING for the code

  QR family specific options:
    -v VERSION        Use VERSION, one of the following:
                          1 ... 40           (for QR)
                          M1 ... M4          (for mQR)
                          R7x43 ... R17x139  (for rMQR)
                            R{H}x{W}
                              H: 7, 9, 11, 13, 15, 17
                              W: 43, 59, 77, 99, 139
                          tQR                (for tQR)
    -m MASK           Use MASK pattern, one of the following:
                          0 ... 7            (for QR)
                          0 ... 4            (for mQR)
    -l LEVEL          Use ecc LEVEL, one of the following:
                          L, M, Q, H         (for QR)
                          L, M, Q            (for mQR)
                             M,    H         (for rMQR)

Detection

% qrean-detect qr.png   # The source file must be a PNG file so far
Hello
%

Library Usage

qrean_t qrean = create_qrean(QREAN_CODE_TYPE_QR);
qrean_write_string(&qrean, "Hello, world", QREAN_DATA_TYPE_AUTO);

size_t len = qrean_read_bitmap(&qrean, buffer, sizeof(buffer), 8);
fwrite(buffer, 1, len, stdout);
qrean_write_pixel(&qrean, qrean.canvas.symbol_width - 1, qrean.canvas.symbol_height - 1, 0);
qrean_fix_errors(&qrean);

qrean_read_string(&qrean, buffer, sizeof(buffer));
printf("%s\n", buffer);
qrean_t *qrean = new_qrean(QREAN_CODE_TYPE_QR);
qrean_set_qr_version(qrean, QR_VERSION_3);
qrean_set_qr_errorlevel(qrean, QR_ERRORLEVEL_M);
qrean_set_qr_maskpattern(qrean, QR_MASKPATTERN_7);

qrean_write_qr_finder_pattern(qrean);
qrean_write_qr_alignment_pattern(qrean);
qrean_write_qr_timing_pattern(qrean);
qrean_write_qr_format_info(qrean);
qrean_write_qr_version_info(qrean);

See examples/ directory for working examples.

JavaScript / TypeScript Usage (Powered by Wasm)

import { Qrean } from 'qrean';

const qrean = new Qrean();
const img = await qrean.encode('Hello, world');
console.log(img);
// {
//   width: 116,
//   height: 116,
//   data: Uint8ClampedArray(53824) [
//    :

const { detected } = await qrean.detect(img);
console.log(detected[0].text);
// Hello, world

It requires Wasm to run, but don't worry, most engines support it; Node, Deno, Bun and browsers.

Install

As a CLI

  • Windows
  • UNIX-like systems (Linux / macOS / *BSD)
    • Just make install

As a JavaScript / TypeScript library

% npm install qrean

As a C library for embedded systems

Take a look at src/ and include (or copy) them!

Why?

As you can see, you can take control. I love QR and Barcodes.

The core (encode/decode) doesn't rely on malloc() for portability. It uses a stack instead of a heap, but you can still use new_qrean for example if you prefer.

You can also configure a callback to draw a pixel directly on a screen for example.

Supported codes

typeencodedecodedetect
QR
mQR
rMQR
tQR
UPCA / EAN13 / EAN8
CODE39
CODE93
NW7
ITF

Keywords

FAQs

Package last updated on 17 Feb 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc