Heim > Backend-Entwicklung > Golang > golang webp转gif

golang webp转gif

WBOY
Freigeben: 2023-05-10 09:18:07
Original
1039 Leute haben es durchsucht

Mit der Verbesserung der Netzwerkbandbreite beginnen immer mehr Websites, animierte Bilder zu verwenden, um das Benutzererlebnis zu bereichern. Es gibt verschiedene Dateiformate für animierte Bilder, darunter WebP und GIF. WebP ist ein neues Bilddateiformat, das von Google entwickelt wurde. Im Vergleich zu Formaten wie JPG und PNG kann WebP die Größe von Bilddateien reduzieren und gleichzeitig ein besseres Komprimierungsverhältnis und eine höhere Bildqualität bieten. GIF ist ein altmodisches animiertes Bildformat. Obwohl seine Dateigröße größer als WebP ist, ist seine Leistung bei animierten Bildern sehr gut.

In diesem Fall müssen viele Webmaster und Entwickler animierte Bilder im WebP-Format in animierte Bilder im GIF-Format konvertieren. Aus diesem Grund können wir die Programmiersprache Golang verwenden, um diesen Konvertierungsprozess zu implementieren. In diesem Artikel stellen wir Ihnen vor, wie Sie mit Golang animierte Bilder im WebP-Format in animierte Bilder im GIF-Format konvertieren.

1. Vorbereitung

Bevor wir WebP in GIF konvertieren, müssen wir einige Golang-Bibliotheken und einen C-Sprachcompiler installieren.

Golang-Bibliothek installieren:

go get -u github.com/chai2010/webp
go get -u github.com/lukeroth/ggif
Nach dem Login kopieren

C-Sprachcompiler installieren:

sudo apt-get install build-essential
Nach dem Login kopieren

Darüber hinaus müssen wir auch einige animierte Bilder im WebP-Format vorbereiten und Animierte Bilddatei im GIF-Format.

2. Animierte Bilder im WebP-Format lesen

Bevor wir animierte Bilder im WebP-Format in animierte Bilder im GIF-Format konvertieren, müssen wir animierte Bilder im WebP-Format lesen. In Golang stehen uns viele Bibliotheken zur Verfügung.

Der Code zum Lesen animierter Bilder im WebP-Format lautet wie folgt:

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]
}
Nach dem Login kopieren

Beachten Sie, dass wir im obigen Code die Bibliothek chai2010/webp verwenden, um Animationen im WebP-Format zu lesen Die Verwendung dieser Bibliothek hat zwei wichtige Vorteile: Erstens unterstützt sie das Lesen animierter Bilder und zweitens ermöglicht sie uns die einfache Konvertierung animierter Bilder im WebP-Format in statische Bilder oder animierte Bilder im PNG-Format.

3. In animierte Bilder im GIF-Format konvertieren

Nachdem wir die animierten Bilder im WebP-Format gelesen haben, müssen wir sie in animierte Bilder im GIF-Format konvertieren. In Golang gibt es eine Bibliothek namens „ggif“, die uns bei diesem Konvertierungsprozess helfen kann.

Der Code zum Konvertieren animierter Bilder im GIF-Format lautet wie folgt:

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)
    }
}
Nach dem Login kopieren

Im obigen Code verwenden wir die ggif-Bibliothek, um animierte Bilder im WebP-Format in das GIF-Format zu konvertieren animiertes Bild. Diese Bibliothek enthält eine gute Dokumentation und Beispiele, die uns bei der Implementierung verschiedener Konvertierungstechniken helfen.

4. Vollständiger Code

Als nächstes integrieren wir den vollständigen WebP-in-GIF-Code:

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)
    }
}
Nach dem Login kopieren

Bevor Sie diesen Code ausführen, müssen Sie „ input.webp“ mit dem Namen Ihrer animierten Bilddatei im WebP-Format.

5. Zusammenfassung

In diesem Artikel stellen wir Ihnen vor, wie Sie mit der Programmiersprache Golang animierte Bilder im WebP-Format in animierte Bilder im GIF-Format konvertieren. Durch diesen Prozess können wir verschiedene für die Website benötigte animierte Bilder problemlos in geeignete Formate konvertieren, damit Benutzer beim Surfen auf der Website ein besseres Erlebnis haben.

Das obige ist der detaillierte Inhalt vongolang webp转gif. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage