Documentation ¶
Index ¶
- Constants
- Variables
- func Compress(img *Image, params CompressParams) ([]byte, error)
- func NChan(pf PixelFormat) int
- func Resize(src, dst *Image) error
- func Transform(jpegBytes []byte, x, y, w, h int, flags Flags) ([]byte, error)
- type CompressParams
- type ExifData
- type Flags
- type Image
- func Decompress(encoded []byte, outFormat PixelFormat) (*Image, error)
- func FromImage(src image.Image, allowDeepClone bool) (*Image, error)
- func NewImage(width, height int, format PixelFormat) *Image
- func ResizeNew(src *Image, dstWidth, dstHeight int) *Image
- func UnrotateExif(exifOrientation int, src *Image) (*Image, error)
- func WrapImage(width, height int, format PixelFormat, pixels []byte) *Image
- func WrapImageStrided(width, height int, format PixelFormat, pixels []byte, stride int) *Image
- func (img *Image) AvgColor() []uint8
- func (img *Image) ChannelSpliter() []byte
- func (img *Image) Clone() *Image
- func (dst *Image) CopyImage(src *Image, dstX1, dstY1 int) error
- func (dst *Image) CopyImageRect(src *Image, srcX1, srcY1, srcX2, srcY2 int, dstX1, dstY1 int) error
- func (img *Image) Matte(r, g, b uint8)
- func (img *Image) NChan() int
- func (img *Image) Premultiply()
- func (img *Image) ResizeNew(w, h int) *Image
- func (img *Image) ToImage() (image.Image, error)
- func (img *Image) ToRGB() *Image
- type PixelFormat
- type Sampling
Constants ¶
const (
ExifTagOrientation = 0x112 // Photo orientation
)
Variables ¶
var ErrNoAlpha = errors.New("Image has no alpha channel")
Functions ¶
func Compress ¶
func Compress(img *Image, params CompressParams) ([]byte, error)
Compress compresses an image using TurboJPEG
func NChan ¶
func NChan(pf PixelFormat) int
NChan returns the number of channels of the pixel format
Types ¶
type CompressParams ¶
CompressParams are the TurboJPEG compression parameters
func MakeCompressParams ¶
func MakeCompressParams(sampling Sampling, quality int, flags Flags) CompressParams
MakeCompressParams returns a fully populated CompressParams struct
type ExifData ¶
type ExifData struct {
// contains filtered or unexported fields
}
ExifData is a wrapper around github.com/dsoprea/go-exif, with only the tags exposed that I've needed to manipulate
func LoadExif ¶
Load a JPEG file, and parse it into it's JFIF segments. You can then read the existing EXIF data, or alter it. Note that if you modify the EXIF data, then reading that same data back from this data structure will not reflect your changes. You changes will only be reflected if you call Save(), and then reload that file using LoadJpegExif again.
func (*ExifData) GetOrientation ¶
See https://www.impulseadventure.com/photo/exif-orientation.html 0th Row 0th Column 1 top left side 2 top right side 3 bottom right side 4 bottom left side 5 left side top 6 right side top 7 right side bottom 8 left side bottom
func (*ExifData) SetOrientation ¶
Set photo orientation (See GetOrientation for meaning of the codes)
type Flags ¶
const ( FlagAccurateDCT Flags = C.TJFLAG_ACCURATEDCT FlagBottomUp Flags = C.TJFLAG_BOTTOMUP FlagFastDCT Flags = C.TJFLAG_FASTDCT FlagFastUpsample Flags = C.TJFLAG_FASTUPSAMPLE FlagNoRealloc Flags = C.TJFLAG_NOREALLOC FlagProgressive Flags = C.TJFLAG_PROGRESSIVE FlagStopOnWarning Flags = C.TJFLAG_STOPONWARNING )
type Image ¶
type Image struct { Pixels []byte Width int Height int Stride int Format PixelFormat Premultiplied bool }
Image is the concrete image type that is used by all functions inside cimg
func Decompress ¶
func Decompress(encoded []byte, outFormat PixelFormat) (*Image, error)
Load an image into memory. JPEG: Uses TurboJPEG PNG: Uses Go's native PNG library TIFF: Uses golang.org/x/image/tiff The resulting image is RGB for JPEGs, or RGBA/Gray for PNG
func FromImage ¶
Convert a Go image.Image into a cimg.Image If allowDeepClone is true, and the source image is type GRAY, NRGBA, or RGBA, then the resulting Image points directly to the pixel buffer of the source image.
func NewImage ¶
func NewImage(width, height int, format PixelFormat) *Image
NewImage creates a new 8-bit image
func UnrotateExif ¶
UnrotateExif rewrites the bytes of an image so that the EXIF orientation information can be discarded. In other words, after running UnrotateExif, the encoded image orientation is the same as the natural display image orientation. exifOrientation must be either 3, 6, or 8.
func WrapImage ¶
func WrapImage(width, height int, format PixelFormat, pixels []byte) *Image
Wrap an array of bytes into an Image object (do not copy pixels)
func WrapImageStrided ¶
func WrapImageStrided(width, height int, format PixelFormat, pixels []byte, stride int) *Image
Wrap an array of bytes into an Image object, with controllable stride (do not copy pixels)
func (*Image) AvgColor ¶
AvgColor computes the average color of the entire image, per channel The averaging is performed in sRGB space (i.e. not linear light) If the image has more than 8 channels, then the function will panic
func (*Image) CopyImageRect ¶
CopyImageRect copies src into dst, at dstX1,dstY1. The source imagery is read from the rectangle specified by the 4 source location parameters. All coordinates are clipped prior to drawing. The only error condition is when the two images have a different number of channels. Note that you will get swapped RGB channels if you do something like copy from an RGB image into a BGR image (i.e. this function does not swizzle the channels, it just does a dumb memcpy of the rows).
func (*Image) Matte ¶
For an RGBA image, blend it on top of the given color, so that transparent regions of the image will be filled with the given color. If the image has no alpha channel, then this is a no-op.
func (*Image) Premultiply ¶
func (img *Image) Premultiply()
Premultiply RGB by A. If the image does not have an alpha channel, or if Premultiplied=true then this is a no-op.
type PixelFormat ¶
const ( PixelFormatRGB PixelFormat = C.TJPF_RGB PixelFormatBGR PixelFormat = C.TJPF_BGR PixelFormatRGBX PixelFormat = C.TJPF_RGBX PixelFormatBGRX PixelFormat = C.TJPF_BGRX PixelFormatXBGR PixelFormat = C.TJPF_XBGR PixelFormatXRGB PixelFormat = C.TJPF_XRGB PixelFormatGRAY PixelFormat = C.TJPF_GRAY PixelFormatRGBA PixelFormat = C.TJPF_RGBA PixelFormatBGRA PixelFormat = C.TJPF_BGRA PixelFormatABGR PixelFormat = C.TJPF_ABGR PixelFormatARGB PixelFormat = C.TJPF_ARGB PixelFormatCMYK PixelFormat = C.TJPF_CMYK PixelFormatUNKNOWN PixelFormat = C.TJPF_UNKNOWN )
type Sampling ¶
const ( Sampling444 Sampling = C.TJSAMP_444 Sampling422 Sampling = C.TJSAMP_422 Sampling420 Sampling = C.TJSAMP_420 SamplingGray Sampling = C.TJSAMP_GRAY Sampling440 Sampling = C.TJSAMP_440 Sampling411 Sampling = C.TJSAMP_411 )
func (Sampling) GetMCUHeight ¶
*
- MCU block height (in pixels) for a given level of chrominance subsampling.
- MCU block sizes:
- - 8x8 for no subsampling or grayscale
- - 16x8 for 4:2:2
- - 8x16 for 4:4:0
- - 16x16 for 4:2:0
- - 32x8 for 4:1:1
func (Sampling) GetMCUWidth ¶
*
- MCU block width (in pixels) for a given level of chrominance subsampling.
- MCU block sizes:
- - 8x8 for no subsampling or grayscale
- - 16x8 for 4:2:2
- - 8x16 for 4:4:0
- - 16x16 for 4:2:0
- - 32x8 for 4:1:1