-
Notifications
You must be signed in to change notification settings - Fork 0
/
image.go
80 lines (64 loc) · 2.22 KB
/
image.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package resources
import (
"github.com/gohugonet/hugoverse/pkg/images/exif"
"github.com/gohugonet/hugoverse/pkg/media"
"image"
"image/gif"
)
// ImageFormat is an images file format.
type ImageFormat int
const (
JPEG ImageFormat = iota + 1
PNG
GIF
TIFF
BMP
WEBP
)
var (
ImageFormatsBySubType = map[string]ImageFormat{
media.Builtin.JPEGType.SubType: JPEG,
media.Builtin.PNGType.SubType: PNG,
media.Builtin.TIFFType.SubType: TIFF,
media.Builtin.BMPType.SubType: BMP,
media.Builtin.GIFType.SubType: GIF,
media.Builtin.WEBPType.SubType: WEBP,
}
)
// Giphy represents a GIF Image that may be animated.
type Giphy interface {
image.Image // The first frame.
GIF() *gif.GIF // All frames.
}
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 images processing options to the images.
Process(spec string) (ImageResource, error)
// Crop an images 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.
// {{ $images := $images.Crop "600x400" }}
Crop(spec string) (ImageResource, error)
// Fill scales the images to the smallest possible size that will cover the specified dimensions in spec,
// crops the resized images 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 images using the given spec.
Fit(spec string) (ImageResource, error)
// Resize resizes the images to the given spec. If one of width or height is 0, the images aspect
// ratio is preserved.
Resize(spec string) (ImageResource, error)
// Filter applies one or more filters to an Image.
// {{ $images := $images.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 images
// using a simple histogram method.
Colors() ([]string, error)
// For internal use.
DecodeImage() (image.Image, error)
}