Décodement d'image Go Base64 : Dépannage de l'erreur "Format d'image inconnu"
Dans Go, vous pouvez décoder une image base64 pour obtenir sa largeur et hauteur en utilisant le package image. Cependant, vous pouvez rencontrer l'erreur « Format d'image inconnu » au cours de ce processus.
Considérations sur le décodage :
Pour décoder correctement une image, le gestionnaire de format d'image spécifique doit être inscrit. Par exemple, pour décoder une image PNG, le gestionnaire de format PNG doit être importé en utilisant :
import _ "image/png"
Vous pouvez également utiliser la fonction spécifique au format png.DecodeConfig().
Schéma d'URI de données
Les données d'image base64 que vous recevez font généralement partie d'un schéma d'URI de données, qui consiste de :
À isoler les données codées en base64, découper la chaîne de la virgule après le média tapez :
input := "data:image/png;base64,iVkhdfjdAjdfirtn=" b64data := input[strings.IndexByte(input, ',')+1:]
Exemple de code :
À l'aide des informations fournies, voici un code révisé :
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") }
Notez que cet exemple de code redimensionne également l'image à l'aide du package resize, mais cela n'est pas nécessaire pour simplement décoder la configuration de l'image.
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!