From fd9f924ad730f94f9022ee4b7391c0e99a14a272 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Fri, 4 Jul 2014 18:03:48 -0700 Subject: [PATCH] add a convenient function to preprocess images on client side. --- go/images/preprocess.go | 25 +++++++++++++++++++++++++ go/images/resizing.go | 2 +- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 go/images/preprocess.go diff --git a/go/images/preprocess.go b/go/images/preprocess.go new file mode 100644 index 000000000..b5907b1b8 --- /dev/null +++ b/go/images/preprocess.go @@ -0,0 +1,25 @@ +package images + +import ( + "path/filepath" +) + +/* +* Preprocess image files on client side. +* 1. possibly adjust the orientation +* 2. resize the image to a width or height limit +* 3. remove the exif data +* Call this function on any file uploaded to weedfs +* +*/ +func MaybePreprocessImage(filename string, data []byte, width, height int) (resized []byte) { + ext := filepath.Ext(filename) + switch ext { + case ".png", ".gif": + return Resized(ext, data, width, height) + case ".jpg", ".jpeg": + data = FixJpgOrientation(data) + return Resized(ext, data, width, height) + } + return data +} diff --git a/go/images/resizing.go b/go/images/resizing.go index f5077c1fd..6e774e1db 100644 --- a/go/images/resizing.go +++ b/go/images/resizing.go @@ -25,7 +25,7 @@ func Resized(ext string, data []byte, width, height int) (resized []byte) { switch ext { case ".png": png.Encode(&buf, dstImage) - case ".jpg": + case ".jpg", ".jpeg": jpeg.Encode(&buf, dstImage, nil) case ".gif": gif.Encode(&buf, dstImage, nil)