首页 > 后端开发 > Golang > 如何在 Go 中解码 Base64 编码的图像数据并检索其尺寸?

如何在 Go 中解码 Base64 编码的图像数据并检索其尺寸?

Barbara Streisand
发布: 2024-12-06 21:26:16
原创
986 人浏览过

How to Decode Base64-Encoded Image Data and Retrieve Its Dimensions in Go?

解码 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板