Documentation ¶
Overview ¶
Package convert can convert a image to ascii string or matrix
Index ¶
- Variables
- func OpenImageFile(imageFilename string) (image.Image, error)
- type Converter
- type ImageConverter
- func (converter *ImageConverter) Image2ASCIIMatrix(image image.Image, imageConvertOptions *Options) []string
- func (converter *ImageConverter) Image2ASCIIString(image image.Image, options *Options) string
- func (converter *ImageConverter) Image2CharPixelMatrix(image image.Image, imageConvertOptions *Options) [][]ascii.CharPixel
- func (converter *ImageConverter) ImageBuf2ASCIIString(imageBuf []byte, option *Options) string
- func (converter *ImageConverter) ImageFile2ASCIIMatrix(imageFilename string, option *Options) []string
- func (converter *ImageConverter) ImageFile2ASCIIString(imageFilename string, option *Options) string
- func (converter *ImageConverter) ImageFile2CharPixelMatrix(imageFilename string, imageConvertOptions *Options) [][]ascii.CharPixel
- type ImageResizeHandler
- func (handler *ImageResizeHandler) CalcFitSize(width, height, toBeFitWidth, toBeFitHeight float64) (fitWidth, fitHeight int)
- func (handler *ImageResizeHandler) CalcFitSizeRatio(width, height, imageWidth, imageHeight float64) (ratio float64)
- func (handler *ImageResizeHandler) CalcProportionalFittingScreenSize(sz image.Rectangle) (newWidth, newHeight int, err error)
- func (handler *ImageResizeHandler) ScaleHeightByRatio(height float64, ratio float64) int
- func (handler *ImageResizeHandler) ScaleImage(image image.Image, options *Options) (newImage image.Image)
- func (handler *ImageResizeHandler) ScaleWidthByRatio(width float64, ratio float64) int
- type Options
- type ResizeHandler
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var DefaultOptions = Options{ Ratio: 1, FixedWidth: -1, FixedHeight: -1, FitScreen: true, Colored: true, Reversed: false, StretchedScreen: false, }
DefaultOptions for convert image
Functions ¶
Types ¶
type Converter ¶
type Converter interface { Image2ASCIIMatrix(image image.Image, imageConvertOptions *Options) []string Image2ASCIIString(image image.Image, options *Options) string ImageFile2ASCIIMatrix(imageFilename string, option *Options) []string ImageFile2ASCIIString(imageFilename string, option *Options) string ImageBuf2ASCIIString(imageBuf []byte, option *Options) string Image2PixelASCIIMatrix(image image.Image, imageConvertOptions *Options) [][]ascii.CharPixel ImageFile2PixelASCIIMatrix(image image.Image, imageConvertOptions *Options) [][]ascii.CharPixel }
Converter define the convert image basic operations
type ImageConverter ¶
type ImageConverter struct {
// contains filtered or unexported fields
}
ImageConverter implement the Convert interface, and responsible to image conversion
func NewImageConverter ¶
func NewImageConverter() *ImageConverter
NewImageConverter create a new image converter
func (*ImageConverter) Image2ASCIIMatrix ¶
func (converter *ImageConverter) Image2ASCIIMatrix(image image.Image, imageConvertOptions *Options) []string
Image2ASCIIMatrix converts a image to ASCII matrix
func (*ImageConverter) Image2ASCIIString ¶
func (converter *ImageConverter) Image2ASCIIString(image image.Image, options *Options) string
Image2ASCIIString converts a image to ascii matrix, and the join the matrix to a string
func (*ImageConverter) Image2CharPixelMatrix ¶
func (converter *ImageConverter) Image2CharPixelMatrix(image image.Image, imageConvertOptions *Options) [][]ascii.CharPixel
Image2CharPixelMatrix convert a image to a pixel ascii matrix
func (*ImageConverter) ImageBuf2ASCIIString ¶
func (converter *ImageConverter) ImageBuf2ASCIIString(imageBuf []byte, option *Options) string
ImageBuf2ASCIIString converts a image file to ascii string
func (*ImageConverter) ImageFile2ASCIIMatrix ¶
func (converter *ImageConverter) ImageFile2ASCIIMatrix(imageFilename string, option *Options) []string
ImageFile2ASCIIMatrix converts a image file to ascii matrix
func (*ImageConverter) ImageFile2ASCIIString ¶
func (converter *ImageConverter) ImageFile2ASCIIString(imageFilename string, option *Options) string
Image2ASCIIString converts a image file to ascii string
Example ¶
ExampleImage2ASCIIMatrix is example
converter := NewImageConverter() imageFilename := "testdata/3x3_white.png" convertOptions := DefaultOptions convertOptions.FitScreen = false convertOptions.Colored = false asciiString := converter.ImageFile2ASCIIString(imageFilename, &convertOptions) fmt.Println(asciiString)
Output:
func (*ImageConverter) ImageFile2CharPixelMatrix ¶
func (converter *ImageConverter) ImageFile2CharPixelMatrix(imageFilename string, imageConvertOptions *Options) [][]ascii.CharPixel
ImageFile2CharPixelMatrix convert a image to a pixel ascii matrix
type ImageResizeHandler ¶
type ImageResizeHandler struct {
// contains filtered or unexported fields
}
ImageResizeHandler implement the ResizeHandler interface and responsible for image resizing
func (*ImageResizeHandler) CalcFitSize ¶
func (handler *ImageResizeHandler) CalcFitSize(width, height, toBeFitWidth, toBeFitHeight float64) (fitWidth, fitHeight int)
CalcFitSize through the given length and width , Calculation is able to match the length and width of the specified size, and is proportional scaling.
func (*ImageResizeHandler) CalcFitSizeRatio ¶
func (handler *ImageResizeHandler) CalcFitSizeRatio(width, height, imageWidth, imageHeight float64) (ratio float64)
CalcFitSizeRatio through the given length and width, the computation can match the optimal scaling ratio of the length and width. In other words, it is able to give a given size rectangle to contain pictures Either match the width first, then scale the length equally, or match the length first, then scale the height equally. More detail please check the example
func (*ImageResizeHandler) CalcProportionalFittingScreenSize ¶
func (handler *ImageResizeHandler) CalcProportionalFittingScreenSize(sz image.Rectangle) (newWidth, newHeight int, err error)
CalcProportionalFittingScreenSize proportional scale the image so that the terminal can just show the picture.
func (*ImageResizeHandler) ScaleHeightByRatio ¶
func (handler *ImageResizeHandler) ScaleHeightByRatio(height float64, ratio float64) int
ScaleHeightByRatio scaled the height by ratio
func (*ImageResizeHandler) ScaleImage ¶
func (handler *ImageResizeHandler) ScaleImage(image image.Image, options *Options) (newImage image.Image)
ScaleImage resize the convert to expected size base on the convert options
Example ¶
ExampleScaleImage is scale image example
handler := NewResizeHandler() imageFilePath := "testdata/cat_2000x1500.jpg" img, err := OpenImageFile(imageFilePath) if err != nil { log.Fatal("open image file " + imageFilePath + " failed") } options := DefaultOptions options.Colored = false options.FixedWidth = 200 options.FixedHeight = 100 scaledImage := handler.ScaleImage(img, &options) sz := scaledImage.Bounds() fmt.Print(sz.Max.X, sz.Max.Y)
Output: 200 100
func (*ImageResizeHandler) ScaleWidthByRatio ¶
func (handler *ImageResizeHandler) ScaleWidthByRatio(width float64, ratio float64) int
ScaleWidthByRatio scaled the width by ratio
type Options ¶
type Options struct { Ratio float64 FixedWidth int FixedHeight int FitScreen bool // only work on terminal StretchedScreen bool // only work on terminal Colored bool // only work on terminal Reversed bool }
Options to convert the image to ASCII
type ResizeHandler ¶
type ResizeHandler interface {
ScaleImage(image image.Image, options *Options) (newImage image.Image)
}
ResizeHandler define the operation to resize a image
func NewResizeHandler ¶
func NewResizeHandler() ResizeHandler
NewResizeHandler create a new resize handler