Go Base64-Bilddekodierung: Fehlerbehebung beim Fehler „Unbekanntes Bildformat“
In Go können Sie ein Base64-Bild dekodieren, um dessen Breite und Größe zu ermitteln Höhe mithilfe des Bildpakets. Während dieses Vorgangs kann jedoch der Fehler „Unbekanntes Bildformat“ auftreten.
Überlegungen zur Dekodierung:
Um ein Bild korrekt zu dekodieren, muss der spezifische Bildformat-Handler vorhanden sein eingetragen. Um beispielsweise ein PNG-Bild zu dekodieren, sollte der PNG-Format-Handler importiert werden mit:
import _ "image/png"
Alternativ können Sie die formatspezifische Funktion png.DecodeConfig() verwenden.
Daten-URI-Schema
Die Base64-Bilddaten, die Sie erhalten, sind normalerweise Teil eines Daten-URI-Schemas, das besteht von:
Zu Isolieren Sie die Base64-codierten Daten und schneiden Sie die Zeichenfolge vom Komma nach dem Medium ab Typ:
input := "data:image/png;base64,iVkhdfjdAjdfirtn=" b64data := input[strings.IndexByte(input, ',')+1:]
Beispielcode:
Anhand der bereitgestellten Informationen finden Sie hier einen überarbeiteten Code:
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") }
Beachten Sie, dass dieser Beispielcode Ändert auch die Größe des Bildes mithilfe des Resize-Pakets, dies ist jedoch nicht nur zum Dekodieren der Bildkonfiguration erforderlich.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich beim Dekodieren von Base64-Bildern in Go die Fehlermeldung „Unbekanntes Bildformat'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!