Maison > développement back-end > Golang > le corps du texte

Convertir l'image GIF en base64 dans GO

WBOY
Libérer: 2024-02-09 14:54:08
avant
1008 Les gens l'ont consulté

Convertir limage GIF en base64 dans GO

En langage GO, la conversion d'images GIF en encodage Base64 est une opération courante. En convertissant les données d'image en codage Base64, nous pouvons facilement intégrer des images dans des pages Web ou transmettre des données d'image sous forme de chaîne. Dans le langage GO, vous pouvez utiliser les fonctions du package encoding/base64 pour réaliser cette conversion. Cette conversion est très simple et peut être effectuée avec seulement quelques lignes de code. Ci-dessous, je vais vous présenter comment convertir des images GIF en codage Base64 en langage GO.

Contenu de la question

J'essaie d'envoyer un fichier gif via udp en go, j'ai pensé que le moyen le plus simple était de convertir l'image gif en chaîne base64 et de l'envoyer, mais lorsque je convertis les octets du fichier en base64, il renvoie un vide string, j'ai essayé le module "chilkat" en utilisant le code suivant :

bd := chilkat.NewBinData()
success := bd.LoadFile(path.Join(folderPath, "final.gif"))
if success != true {
    panic("Fail!")
    bd.DisposeBinData()
    return
}
b64Data := *bd.GetEncoded("base64")
Copier après la connexion

Mais ça ne marche pas, si quelqu'un peut m'aider

Solution

Ma solution est la suivante :

var buff bytes.buffer
gif.encodeall(&buff, &anim)
based := base64.stdencoding.encodetostring(buff.bytes())
Copier après la connexion

Mais la chaîne base64 est évidemment trop longue pour être envoyée en udp, Alors la solution pour un envoi correct est la suivante :

encoded := recordScreenToGIF(seconds) // Record X seconds of screen, & convert the result into a base64 GIF
splited := SplitSubN(encoded, 10000) // Split "encoded" each 10K characters
conn.Write([]byte(strconv.Itoa(len(splited))))
for _, elm := range splited {
    _, err = conn.Write([]byte(elm))
    if err != nil {
        panic(err)
    }
    time.Sleep(50 * time.Millisecond)
}
conn.Write([]byte("Done"))
Copier après la connexion

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!

Étiquettes associées:
source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal