Maison > développement back-end > Golang > golang webpgif

golang webpgif

WBOY
Libérer: 2023-05-10 09:18:07
original
1038 Les gens l'ont consulté

Avec l'amélioration de la bande passante du réseau, de plus en plus de sites Web commencent à utiliser des images animées pour enrichir l'expérience utilisateur. Il existe différents formats de fichiers pour les images animées, notamment WebP et GIF. WebP est un nouveau format de fichier image développé par Google. Comparé aux formats tels que JPG et PNG, WebP peut réduire la taille des fichiers image, tout en ayant un meilleur taux de compression et une qualité d'image supérieure. GIF est un format d'image animée à l'ancienne. Bien que sa taille de fichier soit plus grande que celle de WebP, ses performances en images animées sont très bonnes.

Dans cette situation, de nombreux webmasters et développeurs doivent convertir les images animées au format WebP en images animées au format GIF. Pour cette raison, nous pouvons utiliser le langage de programmation Golang pour implémenter ce processus de conversion. A travers cet article, nous allons vous présenter comment utiliser golang pour convertir des images animées au format WebP en images animées au format GIF.

1. Préparation

Avant de convertir WebP en GIF, nous devons installer des bibliothèques Golang et un compilateur en langage C.

Installez la bibliothèque golang :

go get -u github.com/chai2010/webp
go get -u github.com/lukeroth/ggif
Copier après la connexion

Installez le compilateur du langage C :

sudo apt-get install build-essential
Copier après la connexion

De plus, nous devons également préparer des images animées au format WebP et des fichiers d'images animées au format GIF.

2. Lire des images animées au format WebP

Avant de convertir des images animées au format WebP en images animées au format GIF, nous devons lire les images animées au format WebP. Dans Golang, de nombreuses bibliothèques sont disponibles pour nous.

Le code pour lire des images animées au format WebP est le suivant :

package main

import (
    "fmt"
    "image"
    _ "image/png"
    "io"
    "os"

    "github.com/chai2010/webp"
)

func LoadWebPAnimatedImageFromFile(filename string) ([]*image.Paletted, int) {
    f, err := os.Open(filename)
    if err != nil {
        fmt.Println("error:", err)
        return nil, 0
    }
    defer f.Close()

    img, err := webp.DecodeAll(f)
    if err != nil {
        fmt.Println("error:", err)
        return nil, 0
    }

    return img.Frames, img.Delay[0]
}
Copier après la connexion

Notez que dans le code ci-dessus, nous utilisons la bibliothèque chai2010/webp pour lire des images animées au format WebP. L'utilisation de cette bibliothèque présente deux avantages importants : L'un est. qu'il prend en charge la lecture d'images animées, et l'autre est qu'il nous permet de convertir facilement des images animées au format WebP en images statiques ou en images animées au format PNG.

3. Convertir en images animées au format GIF

Après avoir lu les images animées au format WebP, nous devons les convertir en images animées au format GIF. Dans Golang, il existe une bibliothèque appelée "ggif" qui peut nous aider à réaliser ce processus de conversion.

Le code pour convertir des images animées au format GIF est le suivant :

package main

import (
    "fmt"
    "image"
    "os"

    "github.com/lukeroth/ggif"
)

func ConvertToGIF(frames []*image.Paletted, outname string, delay int) {
    f, err := os.Create(outname)
    if err != nil {
        fmt.Println("error:", err)
        return
    }
    defer f.Close()

    if err := ggif.EncodeAll(f, frames, delay); err != nil {
        fmt.Println("error:", err)
    }
}
Copier après la connexion

Dans le code ci-dessus, nous utilisons la bibliothèque ggif pour convertir des images animées au format WebP en images animées au format GIF. Cette bibliothèque est livrée avec une bonne documentation et des exemples pour nous aider à mettre en œuvre diverses techniques de conversion.

4. Code complet

Ensuite, nous intégrons le code WebP complet au code GIF :

package main

import (
    "fmt"
    "image"
    _ "image/png"
    "io"
    "os"

    "github.com/chai2010/webp"
    "github.com/lukeroth/ggif"
)

func main() {
    frames, delay := LoadWebPAnimatedImageFromFile("input.webp")
    ConvertToGIF(frames, "output.gif", delay)
}

func LoadWebPAnimatedImageFromFile(filename string) ([]*image.Paletted, int) {
    f, err := os.Open(filename)
    if err != nil {
        fmt.Println("error:", err)
        return nil, 0
    }
    defer f.Close()

    img, err := webp.DecodeAll(f)
    if err != nil {
        fmt.Println("error:", err)
        return nil, 0
    }

    return img.Frames, img.Delay[0]
}

func ConvertToGIF(frames []*image.Paletted, outname string, delay int) {
    f, err := os.Create(outname)
    if err != nil {
        fmt.Println("error:", err)
        return
    }
    defer f.Close()

    if err := ggif.EncodeAll(f, frames, delay); err != nil {
        fmt.Println("error:", err)
    }
}
Copier après la connexion

Avant d'exécuter ce code, vous devez remplacer "input.webp" par le nom de votre fichier image animée au format WebP .

5. Résumé

Dans cet article, nous vous avons présenté comment utiliser le langage de programmation golang pour convertir des images animées au format WebP en images animées au format GIF. Grâce à ce processus, nous pouvons facilement convertir diverses images animées requises par le site Web dans des formats appropriés afin que les utilisateurs puissent avoir une meilleure expérience lors de la navigation sur le site Web.

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!

source:php.cn
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