ネットワーク帯域幅の改善に伴い、ユーザー エクスペリエンスを豊かにするためにアニメーション画像を使用する 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 サイトの他の関連記事を参照してください。