Home >Backend Development >Golang >How to Properly Decode Base64-Encoded Images in Go?
Go Base64 Image Decode
When working with HTML5 canvas, it's common to obtain base64-encoded image data URLs. These strings contain both a data prefix and the base64-encoded image data itself.
Problem:
One issue commonly encountered is getting an "Unknown image format" error when attempting to decode the base64-encoded image using image.DecodeConfig().
SOLUTION
1. Register Image Format Handlers:
The image.DecodeConfig() function only recognizes image formats that have their handlers registered prior to its execution. For PNG images, which are often encountered, import the image/png package:
import _ "image/png"
By importing this package, the PNG format handler is registered, allowing image.DecodeConfig() to successfully decode PNG images.
2. Remove Data Prefix:
The data prefix (e.g., data:image/png;base64,) in the data URL should be removed before decoding. A more efficient way to do this is by slicing the input string:
input := "data:image/png;base64,iVkhdfjdAjdfirtn=" b64data := input[strings.IndexByte(input, ',')+1:]
This slicing operation creates a new string header without copying the data, resulting in improved performance.
Once the format handlers are registered and the data prefix is removed, image.DecodeConfig() can successfully decode the PNG image and provide its width and height information.
The above is the detailed content of How to Properly Decode Base64-Encoded Images in Go?. For more information, please follow other related articles on the PHP Chinese website!