diff options
Diffstat (limited to 'vendor/github.com/disintegration')
-rw-r--r-- | vendor/github.com/disintegration/imaging/helpers.go | 43 |
1 files changed, 38 insertions, 5 deletions
diff --git a/vendor/github.com/disintegration/imaging/helpers.go b/vendor/github.com/disintegration/imaging/helpers.go index 5fb2b5aac..d4e73f120 100644 --- a/vendor/github.com/disintegration/imaging/helpers.go +++ b/vendor/github.com/disintegration/imaging/helpers.go @@ -76,8 +76,32 @@ func Open(filename string) (image.Image, error) { return img, err } +type encodeConfig struct { + jpegQuality int +} + +var defaultEncodeConfig = encodeConfig{ + jpegQuality: 95, +} + +// EncodeOption sets an optional parameter for the Encode and Save functions. +type EncodeOption func(*encodeConfig) + +// JPEGQuality returns an EncodeOption that sets the output JPEG quality. +// Quality ranges from 1 to 100 inclusive, higher is better. Default is 95. +func JPEGQuality(quality int) EncodeOption { + return func(c *encodeConfig) { + c.jpegQuality = quality + } +} + // Encode writes the image img to w in the specified format (JPEG, PNG, GIF, TIFF or BMP). -func Encode(w io.Writer, img image.Image, format Format) error { +func Encode(w io.Writer, img image.Image, format Format, opts ...EncodeOption) error { + cfg := defaultEncodeConfig + for _, option := range opts { + option(&cfg) + } + var err error switch format { case JPEG: @@ -92,9 +116,9 @@ func Encode(w io.Writer, img image.Image, format Format) error { } } if rgba != nil { - err = jpeg.Encode(w, rgba, &jpeg.Options{Quality: 95}) + err = jpeg.Encode(w, rgba, &jpeg.Options{Quality: cfg.jpegQuality}) } else { - err = jpeg.Encode(w, img, &jpeg.Options{Quality: 95}) + err = jpeg.Encode(w, img, &jpeg.Options{Quality: cfg.jpegQuality}) } case PNG: @@ -113,7 +137,16 @@ func Encode(w io.Writer, img image.Image, format Format) error { // Save saves the image to file with the specified filename. // The format is determined from the filename extension: "jpg" (or "jpeg"), "png", "gif", "tif" (or "tiff") and "bmp" are supported. -func Save(img image.Image, filename string) (err error) { +// +// Examples: +// +// // Save the image as PNG. +// err := imaging.Save(img, "out.png") +// +// // Save the image as JPEG with optional quality parameter set to 80. +// err := imaging.Save(img, "out.jpg", imaging.JPEGQuality(80)) +// +func Save(img image.Image, filename string, opts ...EncodeOption) (err error) { formats := map[string]Format{ ".jpg": JPEG, ".jpeg": JPEG, @@ -136,7 +169,7 @@ func Save(img image.Image, filename string) (err error) { } defer file.Close() - return Encode(file, img, f) + return Encode(file, img, f, opts...) } // New creates a new image with the specified width and height, and fills it with the specified color. |