mirror of
https://github.com/dutchcoders/transfer.sh.git
synced 2024-12-13 06:10:18 +01:00
86 lines
1.7 KiB
Go
86 lines
1.7 KiB
Go
|
// go-qrcode
|
||
|
// Copyright 2014 Tom Harwood
|
||
|
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"flag"
|
||
|
"fmt"
|
||
|
"os"
|
||
|
"strings"
|
||
|
|
||
|
qrcode "github.com/skip2/go-qrcode"
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
outFile := flag.String("o", "", "out PNG file prefix, empty for stdout")
|
||
|
size := flag.Int("s", 256, "image size (pixel)")
|
||
|
textArt := flag.Bool("t", false, "print as text-art on stdout")
|
||
|
negative := flag.Bool("i", false, "invert black and white")
|
||
|
flag.Usage = func() {
|
||
|
fmt.Fprintf(os.Stderr, `qrcode -- QR Code encoder in Go
|
||
|
https://github.com/skip2/go-qrcode
|
||
|
|
||
|
Flags:
|
||
|
`)
|
||
|
flag.PrintDefaults()
|
||
|
fmt.Fprintf(os.Stderr, `
|
||
|
Usage:
|
||
|
1. Arguments except for flags are joined by " " and used to generate QR code.
|
||
|
Default output is STDOUT, pipe to imagemagick command "display" to display
|
||
|
on any X server.
|
||
|
|
||
|
qrcode hello word | display
|
||
|
|
||
|
2. Save to file if "display" not available:
|
||
|
|
||
|
qrcode "homepage: https://github.com/skip2/go-qrcode" > out.png
|
||
|
|
||
|
`)
|
||
|
}
|
||
|
flag.Parse()
|
||
|
|
||
|
if len(flag.Args()) == 0 {
|
||
|
flag.Usage()
|
||
|
checkError(fmt.Errorf("Error: no content given"))
|
||
|
}
|
||
|
|
||
|
content := strings.Join(flag.Args(), " ")
|
||
|
|
||
|
var err error
|
||
|
var q *qrcode.QRCode
|
||
|
q, err = qrcode.New(content, qrcode.Highest)
|
||
|
checkError(err)
|
||
|
|
||
|
if *textArt {
|
||
|
art := q.ToString(*negative)
|
||
|
fmt.Println(art)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if *negative {
|
||
|
q.ForegroundColor, q.BackgroundColor = q.BackgroundColor, q.ForegroundColor
|
||
|
}
|
||
|
|
||
|
var png []byte
|
||
|
png, err = q.PNG(*size)
|
||
|
checkError(err)
|
||
|
|
||
|
if *outFile == "" {
|
||
|
os.Stdout.Write(png)
|
||
|
} else {
|
||
|
var fh *os.File
|
||
|
fh, err = os.Create(*outFile + ".png")
|
||
|
checkError(err)
|
||
|
defer fh.Close()
|
||
|
fh.Write(png)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func checkError(err error) {
|
||
|
if err != nil {
|
||
|
fmt.Fprintf(os.Stderr, "%s\n", err)
|
||
|
os.Exit(1)
|
||
|
}
|
||
|
}
|