package main

import (
	"bytes"
	"image"
	"image/jpeg"
	"image/png"
	"strings"

	"github.com/nfnt/resize"
)

func dataToImage(data []byte, imageName string) (image.Image, error) {
	reader := bytes.NewReader(data)
	var imageExtension = strings.Split(imageName, ".")[1]
	var img image.Image
	var err error
	switch imageExtension {
	case "png":
		img, err = png.Decode(reader)
	case "jpg":
		img, err = jpeg.Decode(reader)
	case "jpeg":
		img, err = jpeg.Decode(reader)
	default:
		img = nil
	}
	if err != nil {
		return img, err
	}
	return img, err
}

func imageToData(img image.Image, imageName string) ([]byte, error) {
	buf := new(bytes.Buffer)
	var imageExtension = strings.Split(imageName, ".")[1]
	var err error
	switch imageExtension {
	case "png":
		err = png.Encode(buf, img)
	case "jpg":
		err = jpeg.Encode(buf, img, nil)
	case "jpeg":
		err = jpeg.Encode(buf, img, nil)
	default:
		img = nil
	}
	if err != nil {
		return buf.Bytes(), err
	}
	return buf.Bytes(), err
}

func imageToPNG(img image.Image) ([]byte, error) {
	buf := new(bytes.Buffer)
	var err error
	err = png.Encode(buf, img)
	return buf.Bytes(), err
}

func Resize(img image.Image) image.Image {
	r := resize.Resize(uint(config.ImgWidth), uint(config.ImgHeigh), img, resize.Lanczos3)
	return r
}
