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
+15.4k Golang : Delete certain files in a directory
+36.4k Golang : Convert date or time stamp from string to time.Time type
+13.8k Golang : Tutorial on loading GOB and PEM files
+14.4k Golang : Recombine chunked files example
+9.2k Golang : How to capture return values from goroutines?
+12.4k Golang : Validate email address
+9.5k Golang : Qt Yes No and Quit message box example
+35.2k Golang : Upload and download file to/from AWS S3
+9.3k Golang : Generate Codabar
+10.2k Golang : Get login name from environment and prompt for password
+29.9k Golang : How to get HTTP request header information?