qr-code

Version, currently 1.0.34 versions

github.com/spider-gazelle/qr-code

a QR Code implementation written in crystal lang

23 stars
1 dependent
License: MIT

Installation

# Add this to your shard.yml
dependencies:
  qr-code:
    github: spider-gazelle/qr-code
    version: ~> 1.0.3

Then run:

shards install

shard.yml

Crystal
>= 0.36.1

Dependencies

Development Dependencies

  • ameba*github: veelenga/amebadev
  • stumpy_png*github: stumpycr/stumpy_pngdev

README

# Crystal Lang QR Code

[![CI](https://github.com/spider-gazelle/qr-code/actions/workflows/ci.yml/badge.svg)](https://github.com/spider-gazelle/qr-code/actions/workflows/ci.yml)

Native crystal lang QR code, no external dependencies

## Installation

1. Add the dependency to your `shard.yml`:

   ```yaml
   dependencies:
     qr-code:
       github: spider-gazelle/qr-code
   ```

2. Run `shards install`


## Usage

```crystal
require "qr-code"

qr = QRCode.new("my string to generate", size: 4, level: :h)
puts qr.to_s

```

output

```
xxxxxxx x  x x   x x  xx  xxxxxxx
x     x  xxx  xxxxxx xxx  x     x
x xxx x  xxxxx x       xx x xxx x
... etc
```


### Doing your own rendering

```crystal
require "qr-code"

qr = QRCode.new("my string to generate", size: 4, level: :h)
qr.modules.each do |row|
  row.each do |col|
    print col ? '#' : ' '
  end

  print "\n"
end
```


### Rendering a SVG

```crystal
require "qr-code"

svg_string = QRCode.new("my string to generate").as_svg
```


### Rendering a PNG

you'll need to add [stumpy_png](https://github.com/stumpycr/stumpy_png) to your `shard.yml` dependencies

```crystal
require "qr-code"
require "qr-code/export/png"

# size == width, and QR codes are square
png_bytes = QRCode.new("my string to generate").as_png(size: 256)
```


## Credits

Based off the ruby gem: https://github.com/whomwah/rqrcode_core
Which was adapted from the javascript library: https://github.com/kazuhikoarase/qrcode-generator