Documentation ¶
Overview ¶
Package images provides template functions for manipulating images.
Index ¶
- Constants
- func AddColorToPalette(c color.Color, p color.Palette) color.Palette
- func ColorToHexString(c color.Color) string
- func DecodeConfig(in map[string]any) (*config.ConfigNamespace[ImagingConfig, ImagingConfigInternal], error)
- func IsOpaque(img image.Image) bool
- func ReplaceColorInPalette(c color.Color, p color.Palette)
- func ToFilters(in any) []gift.Filter
- func UnwrapFilter(in gift.Filter) gift.Filter
- type ExifConfig
- type Filters
- func (*Filters) Brightness(percentage any) gift.Filter
- func (*Filters) ColorBalance(percentageRed, percentageGreen, percentageBlue any) gift.Filter
- func (*Filters) Colorize(hue, saturation, percentage any) gift.Filter
- func (*Filters) Contrast(percentage any) gift.Filter
- func (*Filters) Gamma(gamma any) gift.Filter
- func (*Filters) GaussianBlur(sigma any) gift.Filter
- func (*Filters) Grayscale() gift.Filter
- func (*Filters) Hue(shift any) gift.Filter
- func (*Filters) Invert() gift.Filter
- func (*Filters) Opacity(opacity any) gift.Filter
- func (*Filters) Overlay(src ImageSource, x, y any) gift.Filter
- func (*Filters) Pixelate(size any) gift.Filter
- func (*Filters) Process(spec any) gift.Filter
- func (*Filters) Saturation(percentage any) gift.Filter
- func (*Filters) Sepia(percentage any) gift.Filter
- func (*Filters) Sigmoid(midpoint, factor any) gift.Filter
- func (*Filters) Text(text string, options ...any) gift.Filter
- func (*Filters) UnsharpMask(sigma, amount, threshold any) gift.Filter
- type Format
- type Giphy
- type Image
- type ImageConfig
- type ImageProcessSpecProvider
- type ImageProcessor
- func (p *ImageProcessor) ApplyFiltersFromConfig(src image.Image, conf ImageConfig) (image.Image, error)
- func (p *ImageProcessor) DecodeExif(r io.Reader) (*exif.ExifInfo, error)
- func (p *ImageProcessor) Filter(src image.Image, filters ...gift.Filter) (image.Image, error)
- func (p *ImageProcessor) FiltersFromConfig(src image.Image, conf ImageConfig) ([]gift.Filter, error)
- type ImageResource
- type ImageResourceOps
- type ImageSource
- type ImagingConfig
- type ImagingConfigInternal
- type Spec
Constants ¶
const ( ActionResize = "resize" ActionCrop = "crop" ActionFit = "fit" ActionFill = "fill" )
Variables ¶
This section is empty.
Functions ¶
func AddColorToPalette ¶
AddColorToPalette adds c as the first color in p if not already there. Note that it does no additional checks, so callers must make sure that the palette is valid for the relevant format.
func ColorToHexString ¶
ColorToHexString converts a color to a hex string.
func DecodeConfig ¶
func DecodeConfig(in map[string]any) (*config.ConfigNamespace[ImagingConfig, ImagingConfigInternal], error)
func IsOpaque ¶
IsOpaque returns false if the image has alpha channel and there is at least 1 pixel that is not (fully) opaque.
func ReplaceColorInPalette ¶
ReplaceColorInPalette will replace the color in palette p closest to c in Euclidean R,G,B,A space with c.
Types ¶
type ExifConfig ¶
type ExifConfig struct { // Regexp matching the Exif fields you want from the (massive) set of Exif info // available. As we cache this info to disk, this is for performance and // disk space reasons more than anything. // If you want it all, put ".*" in this config setting. // Note that if neither this or ExcludeFields is set, Hugo will return a small // default set. IncludeFields string // Regexp matching the Exif fields you want to exclude. This may be easier to use // than IncludeFields above, depending on what you want. ExcludeFields string // Hugo extracts the "photo taken" date/time into .Date by default. // Set this to true to turn it off. DisableDate bool // Hugo extracts the "photo taken where" (GPS latitude and longitude) into // .Long and .Lat. Set this to true to turn it off. DisableLatLong bool }
type Filters ¶
type Filters struct{}
func (*Filters) Brightness ¶
Brightness creates a filter that changes the brightness of an image. The percentage parameter must be in range (-100, 100).
func (*Filters) ColorBalance ¶
ColorBalance creates a filter that changes the color balance of an image. The percentage parameters for each color channel (red, green, blue) must be in range (-100, 500).
func (*Filters) Colorize ¶
Colorize creates a filter that produces a colorized version of an image. The hue parameter is the angle on the color wheel, typically in range (0, 360). The saturation parameter must be in range (0, 100). The percentage parameter specifies the strength of the effect, it must be in range (0, 100).
func (*Filters) Contrast ¶
Contrast creates a filter that changes the contrast of an image. The percentage parameter must be in range (-100, 100).
func (*Filters) Gamma ¶
Gamma creates a filter that performs a gamma correction on an image. The gamma parameter must be positive. Gamma = 1 gives the original image. Gamma less than 1 darkens the image and gamma greater than 1 lightens it.
func (*Filters) GaussianBlur ¶
GaussianBlur creates a filter that applies a gaussian blur to an image.
func (*Filters) Grayscale ¶
Grayscale creates a filter that produces a grayscale version of an image.
func (*Filters) Hue ¶
Hue creates a filter that rotates the hue of an image. The hue angle shift is typically in range -180 to 180.
func (*Filters) Opacity ¶
Opacity creates a filter that changes the opacity of an image. The opacity parameter must be in range (0, 1).
func (*Filters) Overlay ¶
func (*Filters) Overlay(src ImageSource, x, y any) gift.Filter
Overlay creates a filter that overlays src at position x y.
func (*Filters) Saturation ¶
Saturation creates a filter that changes the saturation of an image.
func (*Filters) Sigmoid ¶
Sigmoid creates a filter that changes the contrast of an image using a sigmoidal function and returns the adjusted image. It's a non-linear contrast change useful for photo adjustments as it preserves highlight and shadow detail.
func (*Filters) UnsharpMask ¶
UnsharpMask creates a filter that sharpens an image. The sigma parameter is used in a gaussian function and affects the radius of effect. Sigma must be positive. Sharpen radius roughly equals 3 * sigma. The amount parameter controls how much darker and how much lighter the edge borders become. Typically between 0.5 and 1.5. The threshold parameter controls the minimum brightness change that will be sharpened. Typically between 0 and 0.05.
type Format ¶
type Format int
Format is an image file format.
func ImageFormatFromExt ¶
func (Format) DefaultExtension ¶
DefaultExtension returns the default file extension of this format, starting with a dot. For example: .jpg for JPEG
func (Format) RequiresDefaultQuality ¶
RequiresDefaultQuality returns if the default quality needs to be applied to images of this format.
func (Format) SupportsTransparency ¶
SupportsTransparency reports whether it supports transparency in any form.
type Image ¶
type Image struct { Format Format Proc *ImageProcessor Spec Spec // contains filtered or unexported fields }
func (*Image) InitConfig ¶
InitConfig reads the image config from the given reader.
type ImageConfig ¶
type ImageConfig struct { // This defines the output format of the output image. It defaults to the source format. TargetFormat Format Action string // If set, this will be used as the key in filenames etc. Key string // Quality ranges from 1 to 100 inclusive, higher is better. // This is only relevant for JPEG and WEBP images. // Default is 75. Quality int // Rotate rotates an image by the given angle counter-clockwise. // The rotation will be performed first. Rotate int // Used to fill any transparency. // When set in site config, it's used when converting to a format that does // not support transparency. // When set per image operation, it's used even for formats that does support // transparency. BgColor color.Color BgColorStr string // Hint about what type of picture this is. Used to optimize encoding // when target is set to webp. Hint webpoptions.EncodingPreset Width int Height int Filter gift.Resampling FilterStr string Anchor gift.Anchor AnchorStr string // contains filtered or unexported fields }
ImageConfig holds configuration to create a new image from an existing one, resize etc.
func DecodeImageConfig ¶
func DecodeImageConfig(action string, options []string, defaults *config.ConfigNamespace[ImagingConfig, ImagingConfigInternal], sourceFormat Format) (ImageConfig, error)
func GetDefaultImageConfig ¶
func GetDefaultImageConfig(action string, defaults *config.ConfigNamespace[ImagingConfig, ImagingConfigInternal]) ImageConfig
func (ImageConfig) GetKey ¶
func (i ImageConfig) GetKey(format Format) string
type ImageProcessSpecProvider ¶
type ImageProcessSpecProvider interface {
ImageProcessSpec() string
}
type ImageProcessor ¶
type ImageProcessor struct { Cfg *config.ConfigNamespace[ImagingConfig, ImagingConfigInternal] // contains filtered or unexported fields }
func NewImageProcessor ¶
func NewImageProcessor(cfg *config.ConfigNamespace[ImagingConfig, ImagingConfigInternal]) (*ImageProcessor, error)
func (*ImageProcessor) ApplyFiltersFromConfig ¶
func (p *ImageProcessor) ApplyFiltersFromConfig(src image.Image, conf ImageConfig) (image.Image, error)
func (*ImageProcessor) DecodeExif ¶
func (*ImageProcessor) FiltersFromConfig ¶
func (p *ImageProcessor) FiltersFromConfig(src image.Image, conf ImageConfig) ([]gift.Filter, error)
type ImageResource ¶
type ImageResource interface { resource.Resource ImageResourceOps }
ImageResource represents an image resource.
type ImageResourceOps ¶
type ImageResourceOps interface { // Height returns the height of the Image. Height() int // Width returns the width of the Image. Width() int // Process applies the given image processing options to the image. Process(spec string) (ImageResource, error) // Crop an image to match the given dimensions without resizing. // You must provide both width and height. // Use the anchor option to change the crop box anchor point. // {{ $image := $image.Crop "600x400" }} Crop(spec string) (ImageResource, error) // Fill scales the image to the smallest possible size that will cover the specified dimensions in spec, // crops the resized image to the specified dimensions using the given anchor point. // The spec is space delimited, e.g. `200x300 TopLeft`. Fill(spec string) (ImageResource, error) // Fit scales down the image using the given spec. Fit(spec string) (ImageResource, error) // Resize resizes the image to the given spec. If one of width or height is 0, the image aspect // ratio is preserved. Resize(spec string) (ImageResource, error) // Filter applies one or more filters to an Image. // {{ $image := $image.Filter (images.GaussianBlur 6) (images.Pixelate 8) }} Filter(filters ...any) (ImageResource, error) // Exif returns an ExifInfo object containing Image metadata. Exif() *exif.ExifInfo // Colors returns a slice of the most dominant colors in an image // using a simple histogram method. Colors() ([]string, error) // For internal use. DecodeImage() (image.Image, error) }
type ImageSource ¶
ImageSource identifies and decodes an image.
type ImagingConfig ¶
type ImagingConfig struct { // Default image quality setting (1-100). Only used for JPEG images. Quality int // Resample filter to use in resize operations. ResampleFilter string // Hint about what type of image this is. // Currently only used when encoding to Webp. // Default is "photo". // Valid values are "picture", "photo", "drawing", "icon", or "text". Hint string // The anchor to use in Fill. Default is "smart", i.e. Smart Crop. Anchor string // Default color used in fill operations (e.g. "fff" for white). BgColor string Exif ExifConfig }
ImagingConfig contains default image processing configuration. This will be fetched from site (or language) config.
type ImagingConfigInternal ¶
type ImagingConfigInternal struct { BgColor color.Color Hint webpoptions.EncodingPreset ResampleFilter gift.Resampling Anchor gift.Anchor Imaging ImagingConfig }
func (*ImagingConfigInternal) Compile ¶
func (i *ImagingConfigInternal) Compile(externalCfg *ImagingConfig) error
type Spec ¶
type Spec interface { // Loads the image source. ReadSeekCloser() (hugio.ReadSeekCloser, error) }