github.com/EngineerKamesh/gofullstack@v0.0.0-20180609171605-d41341d7d4ee/volume4/section2/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  }