Heim >Backend-Entwicklung >Golang >Wie dekodiere ich Base64-kodierte Bilder in Go richtig?

Wie dekodiere ich Base64-kodierte Bilder in Go richtig?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-04 10:14:20370Durchsuche

How to Properly Decode Base64-Encoded Images in Go?

Base64-Bilddekodierung durchführen

Beim Arbeiten mit HTML5-Canvas ist es üblich, Base64-kodierte Bilddaten-URLs zu erhalten. Diese Zeichenfolgen enthalten sowohl ein Datenpräfix als auch die Base64-codierten Bilddaten selbst.

Problem:

Ein häufig auftretendes Problem ist die Fehlermeldung „Unbekanntes Bildformat“, wenn Es wird versucht, das Base64-codierte Bild mit zu dekodieren image.DecodeConfig().

LÖSUNG

1. Bildformat-Handler registrieren:

Die Funktion image.DecodeConfig() erkennt nur Bildformate, deren Handler vor ihrer Ausführung registriert wurden. Für häufig vorkommende PNG-Bilder importieren Sie das Paket image/png:

import _ "image/png"

Durch den Import dieses Pakets wird der PNG-Format-Handler registriert, sodass image.DecodeConfig() PNG-Bilder erfolgreich dekodieren kann.

2. Datenpräfix entfernen:

Das Datenpräfix (z. B. data:image/png;base64,) in der Daten-URL sollte vor der Dekodierung entfernt werden. Eine effizientere Möglichkeit, dies zu tun, ist das Slicing der Eingabezeichenfolge:

input := "data:image/png;base64,iVkhdfjdAjdfirtn="
b64data := input[strings.IndexByte(input, ',')+1:]

Dieser Slicing-Vorgang erstellt einen neuen String-Header, ohne die Daten zu kopieren, was zu einer verbesserten Leistung führt.

Sobald das Format Handler registriert und das Datenpräfix entfernt wird, kann image.DecodeConfig() das PNG-Bild erfolgreich dekodieren und seine Breiten- und Höheninformationen bereitstellen.

Das obige ist der detaillierte Inhalt vonWie dekodiere ich Base64-kodierte Bilder in Go richtig?. 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