Documentation
¶
Index ¶
- Constants
- Variables
- func ColourspaceIsSupported(buf []byte) (bool, error)
- func DetermineImageTypeName(buf []byte) string
- func ImageTypeName(t ImageType) string
- func Initialize()
- func IsSVGImage(buf []byte) bool
- func IsTypeNameSupported(t string) bool
- func IsTypeNameSupportedSave(t string) bool
- func IsTypeSupported(t ImageType) bool
- func IsTypeSupportedSave(t ImageType) bool
- func MaxSize() int
- func Read(path string) ([]byte, error)
- func SetMaxsize(s int) error
- func Shutdown()
- func VipsCacheDropAll()
- func VipsCacheSetMax(maxCacheSize int)
- func VipsCacheSetMaxMem(maxCacheMem int)
- func VipsDebugInfo()
- func VipsIsTypeSupported(t ImageType) bool
- func VipsIsTypeSupportedSave(t ImageType) bool
- func VipsVectorSetEnabled(enable bool)
- func Write(path string, buf []byte) error
- type Color
- type ColorWithAlpha
- type CropOptions
- type Direction
- type EXIF
- type EmbedOptions
- type Extend
- type ExtractOptions
- type GaussianBlurOptions
- type Gravity
- type Image
- func (it *Image) AutoRotate() error
- func (it *Image) Blur(opts GaussianBlurOptions) error
- func (it *Image) Brightness(brightness float64) error
- func (it *Image) ChangeColorspace(interpretation Interpretation) error
- func (it *Image) Clone() *Image
- func (it *Image) Close()
- func (it *Image) Contrast(contrast float64) error
- func (it *Image) Crop(opts CropOptions) error
- func (it *Image) Embed(opts EmbedOptions) error
- func (it *Image) Extract(opts ExtractOptions) error
- func (it *Image) Flatten(background RGBAProvider) error
- func (it *Image) FlipHorizontal() error
- func (it *Image) FlipVertical() error
- func (it *Image) Gamma(gamma float64) error
- func (it *Image) Metadata() ImageMetadata
- func (it *Image) Resize(opts ResizeOptions) error
- func (it *Image) Rotate(angle int) error
- func (it *Image) Save(opts SaveOptions) ([]byte, error)
- func (it *Image) Sharpen(opts SharpenOptions) error
- func (it *Image) Size() ImageSize
- func (it *Image) Trim(opts TrimOptions) error
- func (it *Image) WatermarkImage(opts WatermarkImageOptions) error
- func (it *Image) WatermarkText(opts WatermarkOptions) error
- type ImageMetadata
- type ImageSize
- type ImageType
- type Interpolator
- type Interpretation
- type Kernel
- type RGBAProvider
- type ResizeMode
- type ResizeOptions
- type SaveOptions
- type SharpenOptions
- type SupportedImageType
- type TrimOptions
- type VipsMemoryInfo
- type WatermarkImage
- type WatermarkImageOptions
- type WatermarkOptions
Constants ¶
const ( Make = "exif-ifd0-Make" Model = "exif-ifd0-Model" Orientation = "exif-ifd0-Orientation" XResolution = "exif-ifd0-XResolution" YResolution = "exif-ifd0-YResolution" ResolutionUnit = "exif-ifd0-ResolutionUnit" Software = "exif-ifd0-Software" Datetime = "exif-ifd0-DateTime" YCbCrPositioning = "exif-ifd0-YCbCrPositioning" Compression = "exif-ifd1-Compression" ExposureTime = "exif-ifd2-ExposureTime" FNumber = "exif-ifd2-FNumber" ExposureProgram = "exif-ifd2-ExposureProgram" ISOSpeedRatings = "exif-ifd2-ISOSpeedRatings" ExifVersion = "exif-ifd2-ExifVersion" DateTimeOriginal = "exif-ifd2-DateTimeOriginal" DateTimeDigitized = "exif-ifd2-DateTimeDigitized" ComponentsConfiguration = "exif-ifd2-ComponentsConfiguration" ShutterSpeedValue = "exif-ifd2-ShutterSpeedValue" ApertureValue = "exif-ifd2-ApertureValue" BrightnessValue = "exif-ifd2-BrightnessValue" ExposureBiasValue = "exif-ifd2-ExposureBiasValue" MeteringMode = "exif-ifd2-MeteringMode" Flash = "exif-ifd2-Flash" FocalLength = "exif-ifd2-FocalLength" SubjectArea = "exif-ifd2-SubjectArea" MakerNote = "exif-ifd2-MakerNote" SubSecTimeOriginal = "exif-ifd2-SubSecTimeOriginal" SubSecTimeDigitized = "exif-ifd2-SubSecTimeDigitized" ColorSpace = "exif-ifd2-ColorSpace" PixelXDimension = "exif-ifd2-PixelXDimension" PixelYDimension = "exif-ifd2-PixelYDimension" SensingMethod = "exif-ifd2-SensingMethod" SceneType = "exif-ifd2-SceneType" ExposureMode = "exif-ifd2-ExposureMode" WhiteBalance = "exif-ifd2-WhiteBalance" FocalLengthIn35mmFilm = "exif-ifd2-FocalLengthIn35mmFilm" SceneCaptureType = "exif-ifd2-SceneCaptureType" GPSLatitudeRef = "exif-ifd3-GPSLatitudeRef" GPSLatitude = "exif-ifd3-GPSLatitude" GPSLongitudeRef = "exif-ifd3-GPSLongitudeRef" GPSLongitude = "exif-ifd3-GPSLongitude" GPSAltitudeRef = "exif-ifd3-GPSAltitudeRef" GPSAltitude = "exif-ifd3-GPSAltitude" GPSSpeedRef = "exif-ifd3-GPSSpeedRef" GPSSpeed = "exif-ifd3-GPSSpeed" GPSImgDirectionRef = "exif-ifd3-GPSImgDirectionRef" GPSImgDirection = "exif-ifd3-GPSImgDirection" GPSDestBearingRef = "exif-ifd3-GPSDestBearingRef" GPSDestBearing = "exif-ifd3-GPSDestBearing" GPSDateStamp = "exif-ifd3-GPSDateStamp" )
Common EXIF fields for data extraction
const (
// Quality defines the default JPEG quality to be used.
Quality = 75
)
const Version = "1.1.9"
Version represents the current package semantic version.
const VipsMajorVersion = int(C.VIPS_MAJOR_VERSION)
VipsMajorVersion exposes the current libvips major version number
const VipsMinorVersion = int(C.VIPS_MINOR_VERSION)
VipsMinorVersion exposes the current libvips minor version number
const VipsVersion = string(C.VIPS_VERSION)
VipsVersion exposes the current libvips semantic version
Variables ¶
var ColorBlack = Color{0x00, 0x00, 0x00}
ColorBlack is a shortcut to black RGB color representation.
var ColorWhite = Color{0xFF, 0xFF, 0xFF}
ColorWhite is a shortcut to white RGB color representation.
var ( // ErrExtractAreaParamsRequired defines a generic extract area error ErrExtractAreaParamsRequired = errors.New("extract area width/height params are required") )
var ImageTypes = map[ImageType]string{
JPEG: "jpeg",
PNG: "png",
WEBP: "webp",
TIFF: "tiff",
GIF: "gif",
PDF: "pdf",
SVG: "svg",
HEIF: "heif",
AVIF: "avif",
JP2K: "jp2k",
JXL: "jxl",
MAGICK: "magick",
}
ImageTypes stores as pairs of image types supported and its alias names.
var SupportedImageTypes = map[ImageType]SupportedImageType{}
SupportedImageTypes stores the optional image type supported by the current libvips compilation. Note: lazy evaluation as demand is required due to bootstrap runtime limitation with C/libvips world.
var WatermarkFont = "sans 10"
WatermarkFont defines the default watermark font to be used.
Functions ¶
func ColourspaceIsSupported ¶
ColourspaceIsSupported checks if the image colourspace is supported by libvips.
func DetermineImageTypeName ¶
DetermineImageTypeName determines the image type format by name (jpeg, png, webp or tiff)
func ImageTypeName ¶
ImageTypeName is used to get the human friendly name of an image format.
func Initialize ¶
func Initialize()
Initialize is used to explicitly start libvips in thread-safe way. Only call this function if you have previously turned off libvips.
func IsSVGImage ¶
IsSVGImage returns true if the given buffer is a valid SVG image.
func IsTypeNameSupported ¶
IsTypeNameSupported checks if a given image type name is supported
func IsTypeNameSupportedSave ¶
IsTypeNameSupportedSave checks if a given image type name is supported for saving
func IsTypeSupported ¶
IsTypeSupported checks if a given image type is supported
func IsTypeSupportedSave ¶
IsTypeSupportedSave checks if a given image type is support for saving
func Shutdown ¶
func Shutdown()
Shutdown is used to shutdown libvips in a thread-safe way. You can call this to drop caches as well. If libvips was already initialized, the function is no-op
func VipsCacheDropAll ¶
func VipsCacheDropAll()
VipsCacheDropAll drops the vips operation cache, freeing the allocated memory.
func VipsCacheSetMax ¶
func VipsCacheSetMax(maxCacheSize int)
VipsCacheSetMax sets the maximum number of operations to keep in the vips operation cache.
func VipsCacheSetMaxMem ¶
func VipsCacheSetMaxMem(maxCacheMem int)
VipsCacheSetMaxMem Sets the maximum amount of tracked memory allowed before the vips operation cache begins to drop entries.
func VipsDebugInfo ¶
func VipsDebugInfo()
VipsDebugInfo outputs to stdout libvips collected data. Useful for debugging.
func VipsIsTypeSupported ¶
VipsIsTypeSupported returns true if the given image type is supported by the current libvips compilation.
func VipsIsTypeSupportedSave ¶
VipsIsTypeSupportedSave returns true if the given image type is supported by the current libvips compilation for the save operation.
func VipsVectorSetEnabled ¶
func VipsVectorSetEnabled(enable bool)
VipsVectorSetEnabled enables or disables SIMD vector instructions. This can give speed-up, but can also be unstable on some systems and versions.
Types ¶
type ColorWithAlpha ¶
ColorWithAlpha represents a traditional RGBA color scheme. It uses Color as base for easier reusability of already defined colors.
type CropOptions ¶
type Direction ¶
type Direction int
Direction represents the image direction value.
const ( // Horizontal represents the orizontal image direction value. Horizontal Direction = C.VIPS_DIRECTION_HORIZONTAL // Vertical represents the vertical image direction value. Vertical Direction = C.VIPS_DIRECTION_VERTICAL )
type EXIF ¶
type EXIF struct { Make string Model string Orientation int XResolution string YResolution string ResolutionUnit int Software string Datetime string YCbCrPositioning int Compression int ExposureTime string FNumber string ExposureProgram int ISOSpeedRatings int ExifVersion string DateTimeOriginal string DateTimeDigitized string ComponentsConfiguration string ShutterSpeedValue string ApertureValue string BrightnessValue string ExposureBiasValue string MeteringMode int Flash int FocalLength string SubjectArea string MakerNote string SubSecTimeOriginal string SubSecTimeDigitized string ColorSpace int PixelXDimension int PixelYDimension int SensingMethod int SceneType string ExposureMode int WhiteBalance int FocalLengthIn35mmFilm int SceneCaptureType int GPSLatitudeRef string GPSLatitude string GPSLongitudeRef string GPSLongitude string GPSAltitudeRef string GPSAltitude string GPSSpeedRef string GPSSpeed string GPSImgDirectionRef string GPSImgDirection string GPSDestBearingRef string GPSDestBearing string GPSDateStamp string }
EXIF image metadata
type EmbedOptions ¶
type EmbedOptions struct { Width int Height int Extend Extend Background RGBAProvider }
type Extend ¶
type Extend int
Extend represents the image extend mode, used when the edges of an image are extended, you can specify how you want the extension done. See: https://libvips.github.io/libvips/API/current/libvips-conversion.html#VIPS-EXTEND-BACKGROUND:CAPS
const ( // ExtendBlack extend with black (all 0) pixels mode. ExtendBlack Extend = C.VIPS_EXTEND_BLACK // ExtendCopy copy the image edges. ExtendCopy Extend = C.VIPS_EXTEND_COPY // ExtendRepeat repeat the whole image. ExtendRepeat Extend = C.VIPS_EXTEND_REPEAT // ExtendMirror mirror the whole image. ExtendMirror Extend = C.VIPS_EXTEND_MIRROR // ExtendWhite extend with white (all bits set) pixels. ExtendWhite Extend = C.VIPS_EXTEND_WHITE // ExtendBackground with colour from the background property. ExtendBackground Extend = C.VIPS_EXTEND_BACKGROUND // ExtendLast extend with last pixel. ExtendLast Extend = C.VIPS_EXTEND_LAST )
type GaussianBlurOptions ¶
GaussianBlurOptions represents the gaussian image transformation values.
type Gravity ¶
type Gravity int
Gravity represents the image gravity value.
const ( // GravityCentre represents the centre value used for image gravity orientation. GravityCentre Gravity = iota // GravityNorth represents the north value used for image gravity orientation. GravityNorth // GravityEast represents the east value used for image gravity orientation. GravityEast // GravitySouth represents the south value used for image gravity orientation. GravitySouth // GravityWest represents the west value used for image gravity orientation. GravityWest // GravitySmart enables libvips Smart Crop algorithm for image gravity orientation. GravitySmart )
type Image ¶
type Image struct {
// contains filtered or unexported fields
}
Image allows the sequential transformation of an image. All transformation steps are done in memory on a raw buffer. The image is not encoded until it is saved.
func NewImageFromBuffer ¶
NewImageFromBuffer creates a new image transformation from the given buffer. The file type is determined by the header of the buffer and the image is decoded according to that determined file type.
func NewImageFromFile ¶
NewImageFromFile loads the given file into a buffer and then loads it via NewImageFromBuffer.
func (*Image) AutoRotate ¶
AutoRotate performs rotation according to exif information within the image, turning a previous "virtual" rotation into a real one (that modifies pixel).
func (*Image) Brightness ¶
Brightness applies the given brightness value to the current image.
func (*Image) ChangeColorspace ¶
func (it *Image) ChangeColorspace(interpretation Interpretation) error
Change (or enforce) the given interpretation/colorspace.
func (*Image) Clone ¶
Clone the current transformation state. Performing further transformations will not manipulate the source it has been cloned from (and vice versa).
func (*Image) Close ¶
func (it *Image) Close()
Close explicitly closes the image and free up its resources. It may no longer be used afterwards.
func (*Image) Crop ¶
func (it *Image) Crop(opts CropOptions) error
Crop the current image to the specified Width and Height, if necessary. If the image is already smaller than the given dimensions, nothing is done.
func (*Image) Embed ¶
func (it *Image) Embed(opts EmbedOptions) error
Embed the image on the given background. The image will be centered.
func (*Image) Extract ¶
func (it *Image) Extract(opts ExtractOptions) error
Extract the given area from the image (removing everything outside that area).
func (*Image) Flatten ¶
func (it *Image) Flatten(background RGBAProvider) error
Flatten removes the alpha channel from the current image, replacing it with the given background.
func (*Image) FlipHorizontal ¶
FlipHorizontal transposes the image along the X axis, turning it from left to right.
func (*Image) FlipVertical ¶
FlipVertical transposes the image along the Y axis, turning it from top to bottom.
func (*Image) Metadata ¶
func (it *Image) Metadata() ImageMetadata
Metadata returns the metadata of the image.
func (*Image) Resize ¶
func (it *Image) Resize(opts ResizeOptions) error
Resize the current image buffer according to the given options. Depending on the selected mode, aspect ratio is honored or ignored.
If neither Height nor Width are specified, both are set to the current dimensions of the image.
If only Height or Width is specified, the other is calculated from the
current image dimensions, treating the specified dimension as a constraint.
func (*Image) Save ¶
func (it *Image) Save(opts SaveOptions) ([]byte, error)
Save the image to a buffer, encoding it in the process. If no image type is specified, the image type from the initial image will be used (so if it was a JPEG before, it will be a JPEG again).
If no Quality or Compression levels are set, default values are used. Those are a quality level of 75% and a compression level of 6.
func (*Image) Trim ¶
func (it *Image) Trim(opts TrimOptions) error
Trim the image in regards to a given color and threshold. It will look for the specified color (within the given threshold) from the border of the image inwards and find the "borders" to a different colors to determine how to cut the image.
func (*Image) WatermarkImage ¶
func (it *Image) WatermarkImage(opts WatermarkImageOptions) error
WatermarkImage puts an image on top of the image.
func (*Image) WatermarkText ¶
func (it *Image) WatermarkText(opts WatermarkOptions) error
WatermarkText adds a text on top of the image.
type ImageMetadata ¶
type ImageMetadata struct { Orientation int Channels int Alpha bool Profile bool Type string Space string Size ImageSize Interpretation Interpretation EXIF EXIF }
ImageMetadata represents the basic metadata fields
func Metadata ¶
func Metadata(buf []byte) (ImageMetadata, error)
Metadata returns the image metadata (size, type, alpha channel, profile, EXIF orientation...).
type ImageType ¶
type ImageType int
ImageType represents an image type value.
const ( // UNKNOWN represents an unknown image type value. UNKNOWN ImageType = C.UNKNOWN // JPEG represents the JPEG image type. JPEG ImageType = C.JPEG // WEBP represents the WEBP image type. WEBP ImageType = C.WEBP // PNG represents the PNG image type. PNG ImageType = C.PNG // TIFF represents the TIFF image type. TIFF ImageType = C.TIFF // GIF represents the GIF image type. GIF ImageType = C.GIF // PDF represents the PDF type. PDF ImageType = C.PDF // SVG represents the SVG image type. SVG ImageType = C.SVG // HEIF represents the HEIC/HEIF/HVEC image type HEIF ImageType = C.HEIF // AVIF represents the AVIF image type. AVIF ImageType = C.AVIF // JP2K represents the JPEG 2000 image type. JP2K ImageType = C.JP2K // JXL represents the JPEG XL image type. JXL ImageType = C.JXL // MAGICK represents the libmagick compatible generic image type. MAGICK ImageType = C.MAGICK )
func DetermineImageType ¶
DetermineImageType determines the image type format (jpeg, png, webp or tiff)
type Interpolator ¶
type Interpolator int
Interpolator represents the image interpolation value.
const ( // Bicubic interpolation value. Bicubic Interpolator = iota // Bilinear interpolation value. Bilinear // Nohalo interpolation value. Nohalo // Nearest neighbour interpolation value. Nearest )
func (Interpolator) String ¶
func (i Interpolator) String() string
type Interpretation ¶
type Interpretation int
Interpretation represents the image interpretation type. See: https://libvips.github.io/libvips/API/current/VipsImage.html#VipsInterpretation
const ( // InterpretationError points to the libvips interpretation error type. InterpretationError Interpretation = C.VIPS_INTERPRETATION_ERROR // InterpretationMultiband points to its libvips interpretation equivalent type. InterpretationMultiband Interpretation = C.VIPS_INTERPRETATION_MULTIBAND // InterpretationBW points to its libvips interpretation equivalent type. InterpretationBW Interpretation = C.VIPS_INTERPRETATION_B_W // InterpretationCMYK points to its libvips interpretation equivalent type. InterpretationCMYK Interpretation = C.VIPS_INTERPRETATION_CMYK // InterpretationRGB points to its libvips interpretation equivalent type. InterpretationRGB Interpretation = C.VIPS_INTERPRETATION_RGB // InterpretationSRGB points to its libvips interpretation equivalent type. InterpretationSRGB Interpretation = C.VIPS_INTERPRETATION_sRGB // InterpretationRGB16 points to its libvips interpretation equivalent type. InterpretationRGB16 Interpretation = C.VIPS_INTERPRETATION_RGB16 // InterpretationGREY16 points to its libvips interpretation equivalent type. InterpretationGREY16 Interpretation = C.VIPS_INTERPRETATION_GREY16 // InterpretationScRGB points to its libvips interpretation equivalent type. InterpretationScRGB Interpretation = C.VIPS_INTERPRETATION_scRGB // InterpretationLAB points to its libvips interpretation equivalent type. InterpretationLAB Interpretation = C.VIPS_INTERPRETATION_LAB // InterpretationXYZ points to its libvips interpretation equivalent type. InterpretationXYZ Interpretation = C.VIPS_INTERPRETATION_XYZ )
func ImageInterpretation ¶
func ImageInterpretation(buf []byte) (Interpretation, error)
ImageInterpretation returns the image interpretation type. See: https://libvips.github.io/libvips/API/current/VipsImage.html#VipsInterpretation
type Kernel ¶
type Kernel int
resampling kernels
const ( //The default chosen by VIPS. DefaultKernel Kernel = iota //The nearest pixel to the point. NearestKernel //Convolve with a triangle filter. LinearKernel //Convolve with a cubic filter. CubicKernel //Convolve with a Mitchell kernel. MitchellKernel //Convolve with a two-lobe Lanczos kernel. Lanczos2Kernel //Convolve with a three-lobe Lanczos kernel. Lanczos3Kernel LastKernel )
type RGBAProvider ¶
RGBAProvider defines the interface required to get RGBA compatible color channels.
type ResizeMode ¶
type ResizeMode int
ResizeMode defines how the resize operation should be performed.
const ( // The dimensions will be enforced, no matter the aspect ratio. ResizeModeForce ResizeMode = iota // The dimensions will not be exceeded while honoring the aspect ratio. ResizeModeFit // One dimension will not be exceeded. The image will be *at least* as big // as the desired dimensions, while the aspect ratio is kept. ResizeModeFitUp )
func (ResizeMode) String ¶
func (rm ResizeMode) String() string
type ResizeOptions ¶
type ResizeOptions struct { Height int Width int Top int Left int Zoom int Mode ResizeMode Interpolator Interpolator Kernel Kernel Interpretation Interpretation }
type SaveOptions ¶
type SaveOptions vipsSaveOptions
type SharpenOptions ¶
SharpenOptions represents the image sharp transformation options.
type SupportedImageType ¶
SupportedImageType represents whether a type can be loaded and/or saved by the current libvips compilation.
func IsImageTypeSupportedByVips ¶
func IsImageTypeSupportedByVips(t ImageType) SupportedImageType
IsImageTypeSupportedByVips returns true if the given image type is supported by current libvips compilation.
type TrimOptions ¶
type TrimOptions struct { Background RGBAProvider Threshold float64 }
type VipsMemoryInfo ¶
VipsMemoryInfo represents the memory stats provided by libvips.
func VipsMemory ¶
func VipsMemory() VipsMemoryInfo
VipsMemory gets memory info stats from libvips (cache size, memory allocs...)
type WatermarkImage ¶
WatermarkImage represents the image-based watermark supported options.
type WatermarkImageOptions ¶
type WatermarkOptions ¶
type WatermarkOptions struct { Width int DPI int Margin int Opacity float32 NoReplicate bool Text string Font string Background RGBAProvider }
WatermarkOptions represents the text-based watermark supported options.