Heim > Backend-Entwicklung > Golang > Wie dekodiere ich Base64-kodierte Bilddaten und rufe ihre Abmessungen in Go ab?

Wie dekodiere ich Base64-kodierte Bilddaten und rufe ihre Abmessungen in Go ab?

Barbara Streisand
Freigeben: 2024-12-06 21:26:16
Original
1045 Leute haben es durchsucht

How to Decode Base64-Encoded Image Data and Retrieve Its Dimensions in Go?

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))
}
Nach dem Login kopieren

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:]
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage