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
Barbara StreisandOriginal
2024-12-06 21:26:161061Durchsuche

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))
}

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!

Stellungnahme:
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