Dekodierung von Go Base64-Bilddaten
Problem:
Sie erhalten eine Base64- verschlüsselte Bilddaten-URL von einer Leinwand und versuchen, sie zu dekodieren, um ihre Breite und Höhe abzurufen, aber Sie stoßen auf ein „Unbekanntes Bildformat“ Fehler.
Lösung:
Das bereitgestellte Daten-URL-Format ist ein Daten-URI-Schema, das zusätzliche Informationen wie den Bildtyp und die Base64-Kodierung enthält. Um es richtig zu dekodieren, befolgen Sie diese Schritte:
import ( "encoding/base64" "fmt" "image" _ "image/png" // Register the PNG format handler "strings" ) func decodeBase64Image(dataURL string) (image.Config, error) { // Remove the prefix (e.g., "data:image/png;base64,") base64Data := dataURL[strings.IndexByte(dataURL, ',')+1:] // Decode the Base64-encoded image data decoded, err := base64.StdEncoding.DecodeString(base64Data) if err != nil { return image.Config{}, fmt.Errorf("could not decode Base64 data: %w", err) } // Decode the image configuration return image.DecodeConfig(bytes.NewReader(decoded)) }
Durch die Registrierung des PNG-Format-Handlers (_ „image/png“) aktivieren Sie die Funktion image.DecodeConfig(), um die Bilddaten richtig zu dekodieren. Sie können die Funktion png.DecodeConfig() auch direkt verwenden, wenn Sie das Bildformat kennen.
Vermeidung der Präfixersetzung:
Anstatt das Präfix durch ein Leerzeichen zu ersetzen string: Schneiden Sie die Eingabezeichenfolge in Scheiben, um die Base64-codierten Daten zu extrahieren. Dies ist ein effizienterer Ansatz, da nicht die gesamte Zeichenfolge in den Speicher kopiert werden muss.
base64Data := input[strings.IndexByte(input, ',')+1:]
Das obige ist der detaillierte Inhalt vonWie dekodiere ich Base64-kodierte Bilddaten und rufe ihre Abmessungen in Go ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!