ホームページ > バックエンド開発 > Golang > golang webpからgifへ

golang webpからgifへ

WBOY
リリース: 2023-05-10 09:18:07
オリジナル
1039 人が閲覧しました

ネットワーク帯域幅の改善に伴い、ユーザー エクスペリエンスを豊かにするためにアニメーション画像を使用する Web サイトが増えています。アニメーション画像には、WebP や GIF など、さまざまなファイル形式があります。 WebP は Google が開発した新しい画像ファイル形式で、JPG や PNG などに比べて画像ファイルのサイズを小さくでき、圧縮率が高く高画質です。 GIF は昔ながらのアニメーション画像形式で、WebP に比べてファイル サイズは大きくなりますが、アニメーション画像のパフォーマンスは非常に優れています。

この場合、多くのウェブマスターや開発者は、WebP 形式のアニメーション画像を GIF 形式のアニメーション画像に変換する必要があります。このため、golang プログラミング言語を使用してこの変換プロセスを実装できます。この記事では、golang を使用して WebP 形式のアニメーション画像を GIF 形式のアニメーション画像に変換する方法を紹介します。

1. 準備

WebP を GIF に変換する前に、いくつかの golang ライブラリと C 言語コンパイラをインストールする必要があります。

golang ライブラリのインストール:

go get -u github.com/chai2010/webp
go get -u github.com/lukeroth/ggif
ログイン後にコピー

C 言語コンパイラのインストール:

sudo apt-get install build-essential
ログイン後にコピー

さらに、WebP 形式のアニメーション画像と GIF 形式のアニメーション画像ファイルも用意する必要があります。 。

2. WebP 形式のアニメーション画像を読み取る

WebP 形式のアニメーション画像を GIF 形式のアニメーション画像に変換する前に、WebP 形式のアニメーション画像を読み取る必要があります。 golang には、利用できるライブラリが多数あります。

WebP 形式でアニメーション画像を読み取るためのコードは次のとおりです:

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]
}
ログイン後にコピー

上記のコードでは、WebP 形式でアニメーション画像を読み取るために Chai2010/webp ライブラリを使用していることに注意してください。このライブラリには 2 つの重要な利点があります。1 つはアニメーション画像の読み取りをサポートし、2 つ目は WebP 形式のアニメーション画像を静止画像または PNG 形式のアニメーション画像に簡単に変換できることです。

3. GIF 形式のアニメーション画像に変換する

WebP 形式のアニメーション画像を読み込んだ後、GIF 形式のアニメーション画像に変換する必要があります。 golang には、この変換プロセスを実現するのに役立つ「ggif」と呼ばれるライブラリがあります。

アニメーション画像を GIF 形式に変換するコードは次のとおりです。

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)
    }
}
ログイン後にコピー

上記のコードでは、ggif ライブラリを使用して、WebP 形式のアニメーション画像を GIF 形式のアニメーション画像に変換します。このライブラリには、さまざまな変換手法の実装に役立つ優れたドキュメントとサンプルが付属しています。

4. 完全なコード

次に、完全な WebP を 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)
    }
}
ログイン後にコピー

このコードを実行する前に、「input.webp」を変換する必要があります。 " を WebP 形式のアニメーション画像ファイルの名前に置き換えます。

5. 概要

この記事では、プログラミング言語 golang を使用して、WebP 形式のアニメーション画像を GIF 形式のアニメーション画像に変換する方法を紹介します。このプロセスにより、Web サイトで必要なさまざまなアニメーション画像を適切な形式に簡単に変換することができ、ユーザーが Web サイトを閲覧する際のエクスペリエンスが向上します。

以上がgolang webpからgifへの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート