qrcode

package module
v1.5.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 30, 2021 License: MIT Imports: 15 Imported by: 0

README

go-qrcode

Go Report Card go.dev reference

QR code (abbreviated from Quick Response Code) is the trademark for a type of matrix barcode (or two-dimensional barcode) first designed in 1994 for the automotive industry in Japan. A barcode is a machine-readable optical label that contains information about the item to which it is attached. A QR code uses four standardized encoding modes (numeric, alphanumeric, byte/binary, and kanji) to store data efficiently; extensions may also be used
Features
  • Normally generate QR code across version 1 to version 40.

  • Automatically analyze QR version by source text.

  • Specifying cell shape allowably with WithCustomShape, WithCircleShape (default is rectangle)

  • Specifying output file's format with WithBuiltinImageEncoder, WithCustomImageEncoder (default is JPEG)

  • Not only shape of cell, but also color of QR Code background and foreground color.

  • WithLogoImage, WithLogoImageFilePNG, WithLogoImageFileJPEG help you add an icon at the central of QR Code.

Install
go get -u github.com/lampalink/go-qrcode
Usage

link to CODE

package main

import (
	"fmt"

	qrcode "github.com/lampalink/go-qrcode"
)

func main() {
	qrc, err := qrcode.New("https://github.com/lampalink/go-qrcode")
	if err != nil {
		fmt.Printf("could not generate QRCode: %v", err)
	}

	// save file
	if err := qrc.Save("../testdata/repo-qrcode.jpeg"); err != nil {
		fmt.Printf("could not save image: %v", err)
	}
}
Options

now go-qrcode provides some options to customize output QRCode.

// WithBgColor background color
func WithBgColor(c color.Color) ImageOption {}

// WithBgColorRGBHex background color
func WithBgColorRGBHex(hex string) ImageOption {}

// WithFgColor QR color
func WithFgColor(c color.Color) ImageOption {}

// WithFgColorRGBHex Hex string to set QR Color
func WithFgColorRGBHex(hex string) ImageOption {}

// WithLogoImage .
func WithLogoImage(img image.Image) ImageOption {}

// WithLogoImageFilePNG load image from file, PNG is required
func WithLogoImageFilePNG(f string) ImageOption {}

// WithLogoImageFileJPEG load image from file, JPEG is required
func WithLogoImageFileJPEG(f string) ImageOption {}

// WithQRWidth specify width of each qr block
func WithQRWidth(width uint8) ImageOption {}

// WithCircleShape use circle shape as rectangle(default)
func WithCircleShape() ImageOption {}

// WithCustomShape use custom shape as rectangle(default)
func WithCustomShape(shape IShape) ImageOption {}

// WithBuiltinImageEncoder option includes: JPEG_FORMAT as default, PNG_FORMAT.
// This works like WithBuiltinImageEncoder, the different between them is
// formatTyp is enumerated in (JPEG_FORMAT, PNG_FORMAT)
func WithBuiltinImageEncoder(format formatTyp) ImageOption

// WithCustomImageEncoder to use custom image encoder to encode image.Image into
// io.Writer
func WithCustomImageEncoder(encoder ImageEncoder) ImageOption

use options in New and NewWithSpecV.

func New("text", WithQRWidth(x)) // x is uint8 (0 - 255)

following are some shots:

Documention

Jump to go.dev/github/yeqown/go-qrcode

Documentation

Overview

Package qrcode ... encoder.go working for data encoding

Index

Constants

View Source
const (
	// JPEG_FORMAT as default output file format.
	JPEG_FORMAT formatTyp = iota
	// PNG_FORMAT .
	PNG_FORMAT
)
View Source
const (
	// Low :Level L: 7% error recovery.
	Low ecLevel = iota + 1

	// Medium :Level M: 15% error recovery. Good default choice.
	Medium

	// Quart :Level Q: 25% error recovery.
	Quart

	// Highest :Level H: 30% error recovery.
	Highest
)

Variables

This section is empty.

Functions

func SetDebugMode

func SetDebugMode()

SetDebugMode open debug mode

Types

type DrawContext

type DrawContext struct {
	*gg.Context

	UpperLeft image.Point // (x1, y1)
	W, H      int

	MatrixW, MatrixH int
	CursorX, CursorY int

	Color color.Color
}

DrawContext is a rectangle area

type IShape

type IShape interface {
	// draw to fill the IShape
	Draw(ctx *DrawContext)
}

type ImageEncoder

type ImageEncoder interface {
	// Encode specify which format to encode image into w io.Writer.
	Encode(w io.Writer, img image.Image) error
}

ImageEncoder is an interface which describes the rule how to encode image.Image into io.Writer

type ImageOption

type ImageOption interface {
	// contains filtered or unexported methods
}

func WithBgColor

func WithBgColor(c color.Color) ImageOption

WithBgColor background color

func WithBgColorRGBHex

func WithBgColorRGBHex(hex string) ImageOption

WithBgColorRGBHex background color

func WithBuiltinImageEncoder

func WithBuiltinImageEncoder(format formatTyp) ImageOption

WithBuiltinImageEncoder option includes: JPEG_FORMAT as default, PNG_FORMAT. This works like WithBuiltinImageEncoder, the different between them is formatTyp is enumerated in (JPEG_FORMAT, PNG_FORMAT)

func WithCircleShape

func WithCircleShape() ImageOption

WithCircleShape use circle shape as rectangle(default)

func WithCustomImageEncoder

func WithCustomImageEncoder(encoder ImageEncoder) ImageOption

WithBuiltinImageEncoder to use custom image encoder to encode image.Image into io.Writer

func WithCustomShape

func WithCustomShape(shape IShape) ImageOption

WithCustomShape use custom shape as rectangle(default)

func WithFgColor

func WithFgColor(c color.Color) ImageOption

WithFgColor QR color

func WithFgColorRGBHex

func WithFgColorRGBHex(hex string) ImageOption

WithFgColorRGBHex Hex string to set QR Color

func WithLogoImage

func WithLogoImage(img image.Image) ImageOption

WithLogoImage image should only has 1/5 width of QRCode at most

func WithLogoImageFileJPEG

func WithLogoImageFileJPEG(f string) ImageOption

WithLogoImageFileJPEG load image from file, jpeg is required. image should only has 1/5 width of QRCode at most

func WithLogoImageFilePNG

func WithLogoImageFilePNG(f string) ImageOption

WithLogoImageFilePNG load image from file, PNG is required. image should only has 1/5 width of QRCode at most

func WithQRWidth

func WithQRWidth(width uint8) ImageOption

WithQRWidth specify width of each qr block

type QRCode

type QRCode struct {
	// contains filtered or unexported fields
}

QRCode contains fields to generate QRCode matrix, outputImageOptions to Draw image, and etc.

func New

func New(text string, opts ...ImageOption) (*QRCode, error)

New generate a QRCode struct to create

func NewWithSpecV

func NewWithSpecV(text string, ver int, ecLv ecLevel, opts ...ImageOption) (*QRCode, error)

NewWithSpecV generate a QRCode struct with specified `ver`(QR version) and `ecLv`(Error Correction level)

func (*QRCode) Save

func (q *QRCode) Save(saveToPath string) (err error)

Save QRCode image into saveToPath DONE(@yeqown): use SaveTo rather than drawAndSaveToFile

func (*QRCode) SaveTo

func (q *QRCode) SaveTo(w io.Writer) error

SaveTo QRCode image into `w`(io.Writer)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL