Go Base64 イメージのデコード: 「不明なイメージ形式」エラーのトラブルシューティング
Go では、base64 イメージをデコードして、その幅と画像パッケージを使用した高さ。ただし、このプロセス中に「不明な画像形式」エラーが発生する可能性があります。
デコードに関する考慮事項:
画像を正しくデコードするには、特定の画像形式ハンドラーが必要です。登録済み。たとえば、PNG 画像をデコードするには、
import _ "image/png"
を使用して PNG 形式ハンドラーをインポートする必要があります。または、形式固有の関数 png.DecodeConfig().
データ URI スキーム
受け取る Base64 画像データは通常、データ URI スキーム。次のもので構成されます: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") }
以上がGo で Base64 イメージをデコードすると「不明なイメージ形式」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。