Go Base64 影像解碼:解決「未知影像格式」錯誤
在Go 中,您可以解碼Base64 影像以獲得其寬度和寬度使用圖像包的高度。但是,在此過程中您可能會遇到“未知影像格式”錯誤。
解碼注意事項:
要正確解碼影像,特定影像格式處理程序必須是掛號的。例如,要解碼PNG 映像,應使用以下命令匯入PNG 格式處理程序:
import _ "image/png"
或者,您可以使用格式特定的函數png.DecodeConfig().
資料URI 方案
您收到的Base64 影像資料通常是資料URI方案的一部分,其中包括of:
到隔離base64編碼的數據,將字串從媒體後面的逗號中分割出來類型:
input := "data:image/png;base64,iVkhdfjdAjdfirtn=" b64data := input[strings.IndexByte(input, ',')+1:]
範例程式碼:
使用提供的信息,這是修改後的程式碼:
package main import ( "fmt" "image/png" "log" "os" "strings" "github.com/nfnt/resize" ) func main() { dataURL := os.Getenv("IMAGE_DATA_URL") if dataURL == "" { log.Fatal("Missing IMAGE_DATA_URL environment variable") } // Remove Data URI scheme prefix b64data := dataURL[strings.IndexByte(dataURL, ',')+1:] // Decode base64 string reader := base64.NewDecoder(base64.StdEncoding, strings.NewReader(b64data)) // Register PNG format handler and decode the image config _ = png.RegisterFormat("png", "png", png.PNGConfig{}) config, _, err := image.DecodeConfig(reader) if err != nil { log.Fatal(err) } // Resize the image newSize := resize.Thumbnail(0, 0, config.Width, config.Height) scaledImage := resize.Resize(uint(newSize.Width), uint(newSize.Height), reader, resize.Lanczos3) // Save the resized image outFile, err := os.Create("resized-image.png") if err != nil { log.Fatal(err) } err = png.Encode(outFile, scaledImage) if err != nil { log.Fatal(err) } fmt.Printf("Image saved to: %s", "resized-image.png") }
請注意,此範例程式碼還可以使用resize 套件調整圖像大小,但這對於解碼圖像配置來說不是必需的。
以上是為什麼在 Go 中解碼 Base64 影像時出現「未知影像格式」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!