dchestimage

package
v0.0.0-...-ba0f816 Latest Latest
Warning

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

Go to latest
Published: Mar 9, 2022 License: MIT, MIT Imports: 10 Imported by: 0

README

dchestimage

Code from https://github.com/dchest/captcha

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultConfig = &Config{
	MaxSkew:         0.7,
	CircleCount:     20,
	Font:            DefaultFont,
	BackgroundColor: &color.RGBA{0xFF, 0xFF, 0xFF, 0xFF},
}
View Source
var DefaultFont = &Font{
	Width:     11,
	Height:    18,
	BlackChar: 1,
	Data: [][]byte{
		{
			0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,
			0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0,
			0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0,
			0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0,
			1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0,
			1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
			1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
			1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
			1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
			1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
			1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
			1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
			1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
			1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1,
			0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0,
			0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0,
			0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0,
			0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,
		},
		{
			0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
			0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,
			0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
			0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0,
			0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0,
			0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0,
			0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
			0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
			0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
			0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
			0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
			0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
			0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
			0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
			0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
			0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
			0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
			0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
		},
		{
			0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
			0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
			1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0,
			0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0,
			0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
			0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
			0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
			0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
			0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
			0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
			0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
			0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,
			0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0,
			0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0,
			0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
			0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
			1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
			1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
		},
		{
			0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
			1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
			1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0,
			0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
			0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
			0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
			0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0,
			0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0,
			0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0,
			0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
			0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
			0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
			0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
			0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
			0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
			1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
			1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
			0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,
		},
		{
			0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
			0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0,
			0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0,
			0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0,
			0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0,
			0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0,
			0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0,
			0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0,
			0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0,
			0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0,
			1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0,
			1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
			1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
			1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
			0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
			0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
			0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
			0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
		},
		{
			0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
			0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
			0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
			0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
			0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
			0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
			0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,
			0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
			0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
			0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
			0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
			0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
			0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
			0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
			0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
			1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0,
			1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
			0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
		},
		{
			0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0,
			0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0,
			0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0,
			0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
			0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
			0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
			1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0,
			1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0,
			1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0,
			1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1,
			1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
			1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
			1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
			1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
			0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1,
			0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0,
			0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0,
			0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,
		},
		{
			1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
			1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
			1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1,
			1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0,
			0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
			0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
			0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
			0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
			0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
			0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
			0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,
			0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
			0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,
			0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0,
			0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0,
			0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0,
			0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0,
			0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0,
		},
		{
			0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,
			0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0,
			0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1,
			0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1,
			0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1,
			0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1,
			0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0,
			0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0,
			0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0,
			0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0,
			0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0,
			1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1,
			1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
			1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
			1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
			1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0,
			0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
			0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,
		},
		{
			0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,
			0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
			0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0,
			1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0,
			1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
			1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
			1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
			1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1,
			0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
			0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1,
			0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1,
			0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
			0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
			0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
			0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
			0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0,
			0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,
			0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
		},
	},
}

Functions

func RandomDigits

func RandomDigits(length int) []byte

RandomDigits returns a byte slice of the given length containing pseudorandom numbers in range 0-9. The slice can be used as a captcha solution.

Types

type Config

type Config struct {
	// Maximum absolute skew factor of a single digit.
	MaxSkew float64
	// Number of background circles.
	CircleCount     int
	Font            *Font
	BackgroundColor *color.RGBA
}

func (*Config) MustSavePNG

func (c *Config) MustSavePNG(id string, digits []byte, width, height int) []byte

func (*Config) SavePNG

func (c *Config) SavePNG(id string, digits []byte, width, height int) ([]byte, error)

type Font

type Font struct {
	Width     int
	Height    int
	BlackChar byte
	Data      [][]byte
}

type Image

type Image struct {
	Config *Config
	*image.Paletted
	// contains filtered or unexported fields
}

func NewImage

func NewImage(c *Config, id string, digits []byte, width, height int) *Image

NewImage returns a new captcha image of the given width and height with the given digits, where each digit must be in range 0-9.

func (*Image) WriteTo

func (m *Image) WriteTo(w io.Writer) (int64, error)

WriteTo writes captcha image in PNG format into the given writer.

Jump to

Keyboard shortcuts

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