Heim > Backend-Entwicklung > Golang > Warum erhalte ich beim Dekodieren von Base64-Bildern in Go die Fehlermeldung „Unbekanntes Bildformat'?

Warum erhalte ich beim Dekodieren von Base64-Bildern in Go die Fehlermeldung „Unbekanntes Bildformat'?

Susan Sarandon
Freigeben: 2024-12-08 20:20:13
Original
433 Leute haben es durchsucht

Why Am I Getting an

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

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:

  1. Datenschematyp: Daten:
  2. Medientyp: Bild/PNG
  3. Base64-kodierte Bilddaten

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

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

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!

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