img

package
v0.0.15 Latest Latest
Warning

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

Go to latest
Published: Apr 3, 2023 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func CropImage added in v0.0.11

func CropImage(img image.Image, crop image.Rectangle) image.Image

CropImage crops an Image.

func Open added in v0.0.11

func Open(fileName string) (image.Image, error)

Open an image for editing

func OpenOpts added in v0.0.11

func OpenOpts(fileName string, autoOrientation bool, srcBytes bool) (image.Image, []byte, error)

OpenOpts opens an Image for editing. Possibly returning the src file as a byte slice

func RotateAndCropFile added in v0.0.11

func RotateAndCropFile(source string, dest string, opts Options) error

RotateAndCropFile rotates and crops an image file and saves the result

func RotateImage added in v0.0.11

func RotateImage(img image.Image, angle int) image.Image

RotateImage rotates an image. Negative angle indicates a counter clockwise rotation

func Save added in v0.0.11

func Save(image image.Image, fileName string) error

Save an image (defaults to Jpeg Quality 90)

func SaveOpts added in v0.0.11

func SaveOpts(image image.Image, fileName string, quality int, srcExif []byte) error

SaveOpts saves an image. If srcExif is != nil it will try to extract and exif information from that and append it to the new file

func TransformFile

func TransformFile(source string, destinations map[string]Options) error

TransformFile creates versions of source based on destinations. Supported formats are "gif", "tif", "bmp", "jpg", and "png". Quality and CopyExif are only supported for jpg images. Transform file uses the file extension to determine input and output format

Example
sourceImg := "../assets/leica.jpg"
homeDir, _ := os.UserHomeDir()
sourceDir := path.Join(homeDir, "transform")
_ = os.Mkdir(sourceDir, 0755)

//for all but the thumb we are copying the original meta information
thumb := NewOptions(ResizeAndCrop, 400, 400, false)
landscape := NewOptions(ResizeAndCrop, 1200, 628, true)
square := NewOptions(ResizeAndCrop, 1200, 1200, true)
portrait := NewOptions(ResizeAndCrop, 1080, 1350, true)
resize := NewOptions(Resize, 1200, 0, true)

destImgs := map[string]Options{
	path.Join(sourceDir, "thumb.jpg"):     thumb,
	path.Join(sourceDir, "landscape.jpg"): landscape,
	path.Join(sourceDir, "square.jpg"):    square,
	path.Join(sourceDir, "portrait.jpg"):  portrait,
	path.Join(sourceDir, "resize.jpg"):    resize,
}

_ = TransformFile(sourceImg, destImgs)
fmt.Println("Transformed leica.jpg")
Output:

Transformed leica.jpg

Types

type CropAnchor

type CropAnchor int

CropAnchor specifies where the anchor point should be when cropping an image

const (
	Center CropAnchor = iota
	TopLeft
	Top
	TopRight
	Left
	Right
	BottomLeft
	Bottom
	BottomRight
)

Various Anchors for your crop

type Options

type Options struct {
	Width     int
	Height    int
	Quality   int
	Anchor    CropAnchor
	Transform TransformType
	Strategy  ResampleStrategy
	X         int
	Y         int
	Angle     int
	CopyExif  bool
}

Options holds all options for a given image transformation job

func NewOptions

func NewOptions(transform TransformType, width, height int, copyExif bool) Options

NewOptions creates Options that default to crop center strategy, image quality 90% and Resize strategy lanczos

type ResampleStrategy

type ResampleStrategy int

ResampleStrategy specifies what method to use when resampling an image

const (
	//Lanczos sampling. Default
	Lanczos ResampleStrategy = iota
	//NearestNeighbor sampling
	NearestNeighbor
	//Box sampling
	Box
	//Linear sampling
	Linear
	//Hermite sampling
	Hermite
	//MitchellNetravali sampling
	MitchellNetravali
	//CatmullRom sampling
	CatmullRom
	//BSpline sampling
	BSpline
	//Gaussian sampling
	Gaussian
	//Bartlett sampling
	Bartlett
	//Hann sampling
	Hann
	//Hamming sampling
	Hamming
	//Blackman sampling
	Blackman
	//Welch sampling
	Welch
	//Cosine sampling
	Cosine
)

type TransformType

type TransformType int

TransformType specifies how to transform an image, crop, resize, etc...

const (
	//ResizeAndCrop scales the image to given dimension. To keep aspect ratio the image is cropped
	ResizeAndCrop TransformType = iota
	//Crop cuts a specified region of the image
	Crop
	//Resize scale the image to the specified dimensions. To keep aspect ratio set either width or height to 0
	Resize
	//ResizeAndFit scale the image to fit the maximum specified dimensions.
	ResizeAndFit
)

Jump to

Keyboard shortcuts

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