github.com/EngineerKamesh/gofullstack@v0.0.0-20180609171605-d41341d7d4ee/volume3/section5/gopherface/tasks/imagetask.go (about) 1 package tasks 2 3 import ( 4 "fmt" 5 "image/png" 6 "log" 7 "os" 8 9 "github.com/nfnt/resize" 10 ) 11 12 type ImageResizeTask struct { 13 BaseImageName string 14 ImageFileExtension string 15 } 16 17 func NewImageResizeTask(baseImageName string, imageFileExtension string) *ImageResizeTask { 18 return &ImageResizeTask{BaseImageName: baseImageName, ImageFileExtension: imageFileExtension} 19 } 20 21 func (t *ImageResizeTask) Perform() { 22 23 thumbImageFilePath := t.BaseImageName + "_thumb.png" 24 fmt.Println("Creating new thumbnail at ", thumbImageFilePath) 25 26 originalimagefile, err := os.Open(t.BaseImageName + t.ImageFileExtension) 27 28 if err != nil { 29 log.Println(err) 30 return 31 } 32 33 img, err := png.Decode(originalimagefile) 34 35 if err != nil { 36 log.Println("Encountered Error while decoding image file: ", err) 37 } 38 39 thumbImage := resize.Resize(270, 0, img, resize.Lanczos3) 40 thumbImageFile, err := os.Create(thumbImageFilePath) 41 42 if err != nil { 43 log.Println("Encountered error while resizing image:", err) 44 } 45 46 png.Encode(thumbImageFile, thumbImage) 47 48 }