goImgServer/imageOperations.go
imageOperations.goRaw
1package main
2
3import (
4 "bytes"
5 "image"
6 "image/jpeg"
7 "image/png"
8 "strings"
9
10 "github.com/nfnt/resize"
11)
12
13func dataToImage(data []byte, imageName string) (image.Image, error) {
14 reader := bytes.NewReader(data)
15 var imageExtension = strings.Split(imageName, ".")[1]
16 var img image.Image
17 var err error
18 switch imageExtension {
19 case "png":
20 img, err = png.Decode(reader)
21 case "jpg":
22 img, err = jpeg.Decode(reader)
23 case "jpeg":
24 img, err = jpeg.Decode(reader)
25 default:
26 img = nil
27 }
28 if err != nil {
29 return img, err
30 }
31 return img, err
32}
33
34func imageToData(img image.Image, imageName string) ([]byte, error) {
35 buf := new(bytes.Buffer)
36 var imageExtension = strings.Split(imageName, ".")[1]
37 var err error
38 switch imageExtension {
39 case "png":
40 err = png.Encode(buf, img)
41 case "jpg":
42 err = jpeg.Encode(buf, img, nil)
43 case "jpeg":
44 err = jpeg.Encode(buf, img, nil)
45 default:
46 img = nil
47 }
48 if err != nil {
49 return buf.Bytes(), err
50 }
51 return buf.Bytes(), err
52}
53
54func Resize(img image.Image) image.Image {
55 r := resize.Resize(160, 0, img, resize.Lanczos3)
56 return r
57}