Golang : Encode image to base64 example
We will learn how to convert an image to base64 encoded string in this tutorial. Converting image data to base64 string can be useful in situations such as - you do not want to store the image as file, image is only one-time usage or you want to embed the image directly into an HTML document. For examples, applications like QR code generation, web image capture for chat application or sensitive data that requires short live time.
Below is an example on how to convert an image file to base64 encoded string. You can modify this code to handle image created on the spot and without needing to store in file first. For instance, QR code generation. ( see https://www.socketloop.com/tutorials/golang-how-to-generate-qr-codes )
Here you go!
package main
import (
"bufio"
"encoding/base64"
"fmt"
"net/http"
"os"
)
func Home(w http.ResponseWriter, r *http.Request) {
imgFile, err := os.Open("QrImgGA.png") // a QR code image
if err != nil {
fmt.Println(err)
os.Exit(1)
}
defer imgFile.Close()
// create a new buffer base on file size
fInfo, _ := imgFile.Stat()
var size int64 = fInfo.Size()
buf := make([]byte, size)
// read file content into buffer
fReader := bufio.NewReader(imgFile)
fReader.Read(buf)
// if you create a new image instead of loading from file, encode the image to buffer instead with png.Encode()
// png.Encode(&buf, image)
// convert the buffer bytes to base64 string - use buf.Bytes() for new image
imgBase64Str := base64.StdEncoding.EncodeToString(buf)
// Embed into an html without PNG file
img2html := "<html><body><img src=\"data:image/png;base64," + imgBase64Str + "\" /></body></html>"
w.Write([]byte(fmt.Sprintf(img2html)))
}
func main() {
// http.Handler
mux := http.NewServeMux()
mux.HandleFunc("/", Home)
http.ListenAndServe(":8080", mux)
}
Sample output :
See also : Golang : How to generate QR codes?
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+5.2k Golang : Get S3 or CloudFront object or file information
+18.1k Golang : Logging with logrus
+32.3k Golang : Regular Expression for alphanumeric and underscore
+5.9k Golang : Get Hokkien(福建话)/Min-nan(閩南語) Pronounciations
+9.1k Golang : Play .WAV file from command line
+33.6k Golang : Proper way to set function argument default value
+7.1k Golang : Word limiter example
+22.4k Golang : Round float to precision example
+18.8k Golang : Populate dropdown with html/template example
+14.9k Golang : How to get Unix file descriptor for console and file
+11.1k Golang : Characters limiter example