該程序的目的是解碼嵌入“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 關注
- 234 瀏覽
添加回答
舉報
0/150
提交
取消