Décodage des données d'image Go Base64
Problème :
Vous recevez un Base64- URL de données d'image encodée à partir d'un canevas et essayez de la décoder pour récupérer sa largeur et sa hauteur, mais vous rencontrez un message "Image inconnue format" erreur.
Solution :
Le format d'URL de données fourni est un schéma d'URI de données, qui inclut des informations supplémentaires telles que le type d'image et l'encodage Base64. Pour le décoder correctement, suivez ces étapes :
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)) }
En enregistrant le gestionnaire de format PNG (_ "image/png"), vous activez la fonction image.DecodeConfig() pour décoder correctement les données de l'image. Vous pouvez également utiliser la fonction png.DecodeConfig() directement si vous connaissez le format de l'image.
Évitement du remplacement du préfixe :
Au lieu de remplacer le préfixe par un vide chaîne, découpez la chaîne d'entrée pour extraire les données codées en Base64. Il s'agit d'une approche plus efficace car elle ne nécessite pas de copier la chaîne entière en mémoire.
base64Data := input[strings.IndexByte(input, ',')+1:]
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!