github.com/dolotech/hongbao@v0.0.0-20191130105438-fd59d7a5dda5/src/utils/imgo/encode.go (about)

     1  package imgo
     2  
     3  import (
     4  	"bytes"
     5  	"encoding/base64"
     6  	"image"
     7  	"image/png"
     8  	"io/ioutil"
     9  )
    10  
    11  //Img2Base64 produce a base64 string from a image file.
    12  func Img2Base64(filepath string) (encodeString string, err error) {
    13  	data, err := ioutil.ReadFile(filepath)
    14  	if err != nil {
    15  		return
    16  	}
    17  	encodeString = base64.StdEncoding.EncodeToString(data)
    18  	return
    19  }
    20  
    21  //Base64ToImg create a image file named dstFile from base64 encodeString.
    22  func Base64ToImg(encodeString string, dstFile string) error {
    23  	data, err := base64.StdEncoding.DecodeString(encodeString)
    24  	if err != nil {
    25  		return err
    26  	}
    27  	err2 := ioutil.WriteFile(dstFile, data, 0666)
    28  	if err2 != nil {
    29  		return err2
    30  	}
    31  	return nil
    32  }
    33  
    34  //Img2base64ByGoImage produce a base64 string from Image interface.
    35  func Img2Base64ByGoImage(img image.Image) (encodeString string, err error) {
    36  	var w bytes.Buffer
    37  	encodeErr := png.Encode(&w, img)
    38  	if encodeErr != nil {
    39  		return "", encodeErr
    40  	}
    41  
    42  	encodeString = base64.StdEncoding.EncodeToString(w.Bytes())
    43  	return
    44  }