go-tinyqr

An experimental minimal QR Code generator  http://go-qrcode.appspot.com
git clone https://git.ce9e.org/go-tinyqr.git

commit
4bd85f5c1ab152b35529cd369c114a130aa731c6
parent
cf02323edc040f5263d08b45a60bc8abdc3bde18
Author
Deleplace <deleplace2015@gmail.com>
Date
2017-03-22 14:48
Extra flag -t to print as 2D char map on STDOUT.

Diffstat

M qrcode/main.go 27 ++++++++++++++++++++++++++-

1 files changed, 26 insertions, 1 deletions


diff --git a/qrcode/main.go b/qrcode/main.go

@@ -4,6 +4,7 @@
    4     4 package main
    5     5 
    6     6 import (
   -1     7 	"bytes"
    7     8 	"flag"
    8     9 	"fmt"
    9    10 	"os"
@@ -15,6 +16,7 @@ import (
   15    16 func main() {
   16    17 	outFile := flag.String("o", "", "out PNG file prefix, empty for stdout")
   17    18 	size := flag.Int("s", 256, "image size (pixel)")
   -1    19 	textArt := flag.Bool("t", false, "print as text-art on stdout")
   18    20 	flag.Usage = func() {
   19    21 		fmt.Fprintf(os.Stderr, `qrcode -- QR Code encoder in Go
   20    22 https://github.com/skip2/go-qrcode
@@ -53,6 +55,12 @@ Usage:
   53    55 	q, err = qrcode.New(content, qrcode.Highest)
   54    56 	checkError(err)
   55    57 
   -1    58 	if *textArt {
   -1    59 		art := qr2String(q, true)
   -1    60 		fmt.Println(art)
   -1    61 		return
   -1    62 	}
   -1    63 
   56    64 	var png []byte
   57    65 	png, err = q.PNG(*size)
   58    66 	checkError(err)
@@ -71,6 +79,23 @@ Usage:
   71    79 func checkError(err error) {
   72    80 	if err != nil {
   73    81 		fmt.Fprintf(os.Stderr, "%s\n", err)
   74    -1 		os.Exit(0)
   -1    82 		os.Exit(1)
   -1    83 	}
   -1    84 }
   -1    85 
   -1    86 // qr2String produces a multi-line string that forms a QR-code image.
   -1    87 func qr2String(qr *qrcode.QRCode, inverseColor bool) string {
   -1    88 	bits := qr.Bitmap()
   -1    89 	var buf bytes.Buffer
   -1    90 	for y := range bits {
   -1    91 		for x := range bits[y] {
   -1    92 			if bits[y][x] != inverseColor {
   -1    93 				buf.WriteString("  ")
   -1    94 			} else {
   -1    95 				buf.WriteString("■■")
   -1    96 			}
   -1    97 		}
   -1    98 		buf.WriteString("\n")
   75    99 	}
   -1   100 	return buf.String()
   76   101 }