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.6k Unix/Linux : How to open tar.gz file ?
+16.3k Golang : File path independent of Operating System
+26k Golang : Convert(cast) string to uint8 type and back to string
+13.3k Golang : Activate web camera and broadcast out base64 encoded images
+17.5k Golang : Qt image viewer example
+7.2k Golang : How to stop user from directly running an executable file?
+16.9k Golang : How to tell if a file is compressed either gzip or zip ?
+45.6k Golang : Read tab delimited file with encoding/csv package
+11.5k Golang : GTK Input dialog box examples
+12.4k Golang : Transform comma separated string to slice example
+7k Golang : Fixing Gorilla mux http.FileServer() 404 problem
+9.4k Golang : Populate slice with sequential integers example