aboutsummaryrefslogtreecommitdiff
path: root/go/images
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2014-05-14 23:44:19 -0700
committerChris Lu <chris.lu@gmail.com>2014-05-14 23:44:19 -0700
commitf7d6909b6f4ac42209395bf7f4fd3a6377613267 (patch)
treeab07e6bbbd70253b647b676363a7e36833504177 /go/images
parent5367d965127d44aad1e0d5afc665c462c54a724a (diff)
downloadseaweedfs-f7d6909b6f4ac42209395bf7f4fd3a6377613267.tar.xz
seaweedfs-f7d6909b6f4ac42209395bf7f4fd3a6377613267.zip
1. refactor, move image resizing to its own package
2. make code compile
Diffstat (limited to 'go/images')
-rw-r--r--go/images/images.go39
1 files changed, 39 insertions, 0 deletions
diff --git a/go/images/images.go b/go/images/images.go
new file mode 100644
index 000000000..9d2bb6101
--- /dev/null
+++ b/go/images/images.go
@@ -0,0 +1,39 @@
+package images
+
+import (
+ "bytes"
+ "github.com/disintegration/imaging"
+ "image"
+ "image/gif"
+ "image/jpeg"
+ "image/png"
+)
+
+func FixJpgOrientation() {
+}
+
+func Resized(ext string, data []byte, width, height int) (resized []byte) {
+ if width == 0 && height == 0 {
+ return data
+ }
+ if srcImage, _, err := image.Decode(bytes.NewReader(data)); err == nil {
+ bounds := srcImage.Bounds()
+ var dstImage *image.NRGBA
+ if width == height && bounds.Dx() != bounds.Dy() {
+ dstImage = imaging.Thumbnail(srcImage, width, height, imaging.Lanczos)
+ } else {
+ dstImage = imaging.Resize(srcImage, width, height, imaging.Lanczos)
+ }
+ var buf bytes.Buffer
+ switch ext {
+ case ".png":
+ png.Encode(&buf, dstImage)
+ case ".jpg":
+ jpeg.Encode(&buf, dstImage, nil)
+ case ".gif":
+ gif.Encode(&buf, dstImage, nil)
+ }
+ return buf.Bytes()
+ }
+ return data
+}