该程序的目的是解码嵌入“embed”的img。图像 ( bu.png) 位于main.go的同一目录中。嵌入方式似乎无法设置完全相同的资源package mainimport ( "bytes" _ "embed" "image")var ( //go:embed bu.png img []byte)func main() { a := bytes.NewBuffer(img) a, b, e := image.Decode() println(e.Error()) // image: unknown format println(b) // println(a) // (0x0,0x0) // println(string(img)) // the text of the image seem a little different between nano}图像数据应在 img 变量中导致“嵌入”导入
1 回答
慕容森
TA贡献1853条经验 获得超18个赞
这不是embed
一回事。 您必须导入要支持的各个库。 它们的初始化将注册它们的格式以供 image.Decode
. 引用上述链接,
解码任何特定的图像格式需要事先注册解码器功能。
尝试添加一个导入,例如,
_ "image/png"
我用以下方法对此进行了测试,这应该让你相信这embed
是无关紧要的:
package main
import (
_ "embed"
"fmt"
"bytes"
"image"
//_ "image/png"
//_ "image/jpeg"
//_ "image/gif"
"os"
)
var (
//go:embed bu.png
img []byte
)
func main() {
f, err := os.Open("bu.png")
if err != nil {
panic(fmt.Errorf("Couldn't open file: %w", err))
}
defer f.Close()
fmt.Println(image.Decode(f))
buf := bytes.NewBuffer(img)
fmt.Println(image.Decode(buf))
}
- 1 回答
- 0 关注
- 184 浏览
添加回答
举报
0/150
提交
取消