亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

image.Decode 在 golang 嵌入上失敗

image.Decode 在 golang 嵌入上失敗

Go
一只萌萌小番薯 2022-10-10 18:11:49
該程序的目的是解碼嵌入“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))


}


查看完整回答
反對 回復 2022-10-10
  • 1 回答
  • 0 關注
  • 234 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號