• Stars
    star
    11
  • Rank 1,694,829 (Top 34 %)
  • Language
    Racket
  • License
    MIT License
  • Created over 9 years ago
  • Updated 5 months ago

Reviews

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

Repository Details

a qr code tool for racket-lang

racket-simple-qr

A Qr Code Writer and Reader for Racket

Install

raco pkg install simple-qr

Usage

(qr-write
        [data (string?)]
        [output_file_path (path-string?)]
        [#:mode mode string? "B"]
        [#:error_level error_level string? "H"]
        [#:module_width module_width natural? 5]
        [#:color color (cons/c string? string?) '("black" . "white")]
        [#:express? express? boolean? #f]
        [#:express_path express_path path-string? "imgfile + '.write.express'"]
        [#:output_type output_type (or/c 'png 'svg)]
        )
      void?

output qr code image to file.

color's form is '(front_color . background_color).

use color "transparent" to set transparent(background).

if output_type is png, can use @racket[color-database<%>], but hex color is all available in all formats, recommended.

(qr-read
          [image_file_path (path-string?)]
          [#:express? express? boolean? #f]
          [#:express_path express_path path-string? "imgfile + '.read.express'"]
          )
        string?

read qr code image's content, if failed, return "".

Example

#lang racket

(require simple-qr)

;; block's default width is 5

(qr-write "https://github.com/simmone" "normal.png")

(qr-write "https://github.com/simmone" "normal_color.png" #:color '("#ffbb33" . "#0d47a1"))

(qr-write "https://github.com/simmone" "normal_trans.png" #:color '("#9933CC" . "transparent"))
 
(qr-write "https://github.com/simmone" "small.png" #:module_width 2)

(qr-write "https://github.com/simmone" "large.png" #:module_width 10)

(printf "~a\n~a\n~a\n"
        (qr-read "normal.png")
        (qr-read "small.png")
        (qr-read "large.png"))

(printf "~a\n" (qr-read "damaged.png"))

(qr-write "https://github.com/simmone" "normal.svg" #:output_type 'svg)

(qr-write "https://github.com/simmone" "normal_color.svg" #:color '("#ffbb33" . "#0d47a1") #:output_type 'svg)

(qr-write "https://github.com/simmone" "normal_trans.svg" #:color '("#9933CC" . "transparent") #:output_type 'svg)

Png

(qr-write "https://github.com/simmone" "normal.png")

ScreenShot

(qr-write "https://github.com/simmone" "normal_color.png" #:color '("#ffbb33" . "#0d47a1"))

ScreenShot)

(qr-write "https://github.com/simmone" "normal_trans.png" #:color '("#9933CC" . "transparent"))

ScreenShot

(qr-write "https://github.com/simmone" "small.png" #:module_width 2)

ScreenShot

(qr-write "https://github.com/simmone" "large.png" #:module_width 10)

ScreenShot

SVG

(qr-write "https://github.com/simmone" "normal.svg"  #:output_type 'svg)

ScreenShot

(qr-write "https://github.com/simmone" "normal_color.svg" #:color '("#ffbb33" . "#0d47a1") #:output_type 'svg)

ScreenShot

(qr-write "https://github.com/simmone" "normal_trans.svg" #:color '("#9933CC" . "transparent") #:output_type 'svg)

ScreenShot

Read and Correct

(printf "~a\n" (qr-read "damaged.png"))

ScreenShot

https://github.com/simmone

Express

If you want to see the each step of read or write a qr code, can set #:express? to true.

Default will create folder .read.express for qr-read or .write.express for qr-write.

You can use #:express_path to specify another folder name.

Warning: express will generate a set of scribble files, it's very slow, debug usage only.

Then into the express folder, "scribble --htmls report.scrbl" to generate a detail report.