Golang通过embed嵌入图片时image.Decode报unknown format错误排查
问题排查与修复
问题1:image.Decode 调用参数缺失
标准库image.Decode方法要求传入实现了io.Reader接口的参数,你代码中构造了bytes.NewBuffer(img)实例但没有传入该方法,属于语法调用错误。
问题2:未注册PNG格式解码器
Go标准库的image包仅提供通用解码接口,不同图片格式的解码实现需要单独导入对应包完成注册,解码PNG需要空白导入image/png包。
修复后完整代码
package main import ( "bytes" _ "embed" "image" _ "image/png" // 新增:导入PNG解码器完成注册 ) var ( //go:embed bu.png img []byte ) func main() { a := bytes.NewBuffer(img) // 修正:传入reader参数到Decode方法 imgObj, format, err := image.Decode(a) if err != nil { println(err.Error()) return } println("图片格式:", format) println("图片尺寸:", imgObj.Bounds().Dx(), "x", imgObj.Bounds().Dy()) }
额外验证点
如果修复后仍报错,可先打印len(img)确认embed是否正常加载资源:如果输出为0说明embed未正确读取到bu.png,检查文件名拼写、大小写、是否与main.go在同一级目录即可。
内容的提问来源于stack exchange,提问作者Alberto Zanovello
相关产品推荐
相关产品推荐

