解码 Go Base64 图像数据
问题:
您收到的是 Base64-来自画布的编码图像数据 URL 并尝试对其进行解码以检索其宽度和高度,但是您遇到“未知图像格式”错误。
解决方案:
提供的数据 URL 格式是数据 URI 方案,其中包括图像等附加信息类型和 Base64 编码。要正确解码,请按照以下步骤操作:
import ( "encoding/base64" "fmt" "image" _ "image/png" // Register the PNG format handler "strings" ) func decodeBase64Image(dataURL string) (image.Config, error) { // Remove the prefix (e.g., "data:image/png;base64,") base64Data := dataURL[strings.IndexByte(dataURL, ',')+1:] // Decode the Base64-encoded image data decoded, err := base64.StdEncoding.DecodeString(base64Data) if err != nil { return image.Config{}, fmt.Errorf("could not decode Base64 data: %w", err) } // Decode the image configuration return image.DecodeConfig(bytes.NewReader(decoded)) }
通过注册 PNG 格式处理程序 (_ "image/png"),您可以启用 image.DecodeConfig() 函数来正确解码图像数据。如果你知道图像格式,也可以直接使用 png.DecodeConfig() 函数。
避免前缀替换:
而不是将前缀替换为空string,对输入字符串进行切片以提取 Base64 编码的数据。这是一种更有效的方法,因为它不需要复制内存中的整个字符串。
base64Data := input[strings.IndexByte(input, ',')+1:]
以上是如何在 Go 中解码 Base64 编码的图像数据并检索其尺寸?的详细内容。更多信息请关注PHP中文网其他相关文章!