這個程式的目的是解碼嵌入了“embed”的img。影像 ( bu.png) 位于main.go的同一目錄中。
- 似乎嵌入方式無法設定完全相同的資源
package main
import (
"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 變數中導致“嵌入”匯入
uj5u.com熱心網友回復:
這不是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))
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/347821.html
