github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/image/gif/reader.go (about) 1 // Copyright 2011 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // パッケージgifは、GIF画像のデコーダとエンコーダを実装します。 6 // 7 // GIFの仕様は https://www.w3.org/Graphics/GIF/spec-gif89a.txt にあります。 8 package gif 9 10 import ( 11 "github.com/shogo82148/std/image" 12 "github.com/shogo82148/std/io" 13 ) 14 15 // 廃棄方法。 16 const ( 17 DisposalNone = 0x01 18 DisposalBackground = 0x02 19 DisposalPrevious = 0x03 20 ) 21 22 // Decodeは、rからGIF画像を読み取り、最初の埋め込み画像を [image.Image] として返します。 23 func Decode(r io.Reader) (image.Image, error) 24 25 // GIFは、GIFファイルに保存されている可能性のある複数の画像を表します。 26 type GIF struct { 27 Image []*image.Paletted 28 Delay []int 29 // LoopCountは、表示中にアニメーションが再開される回数を制御します。 30 // LoopCountが0の場合、無限にループします。 31 // LoopCountが-1の場合、各フレームを一度だけ表示します。 32 // それ以外の場合、アニメーションはLoopCount+1回ループします。 33 LoopCount int 34 // Disposalは、フレームごとの連続した廃棄方法です。後方互換性のために、 35 // nil DisposalはEncodeAllに渡すことが有効であり、それぞれのフレームの廃棄方法が 36 // 0(指定なしの廃棄)であることを意味します。 37 Disposal []byte 38 // Configは、グローバルカラーテーブル(パレット)、幅、高さです。nilまたは 39 // 空のcolor.Palette Config.ColorModelは、各フレームが独自の 40 // カラーテーブルを持ち、グローバルカラーテーブルがないことを意味します。各フレームの範囲は、 41 // 二つの点 (0, 0) と (Config.Width, Config.Height) で定義される 42 // 矩形内になければなりません。 43 // 44 // 後方互換性のため、ゼロ値のConfigはEncodeAllに渡すことが有効であり、 45 // 全体のGIFの幅と高さが最初のフレームの範囲のRectangle.Max点と等しいことを意味します。 46 Config image.Config 47 // BackgroundIndexは、DisposalBackground廃棄方法で使用するための、 48 // グローバルカラーテーブル内の背景インデックスです。 49 BackgroundIndex byte 50 } 51 52 // DecodeAllは、rからGIF画像を読み取り、連続するフレームとタイミング情報を返します。 53 func DecodeAll(r io.Reader) (*GIF, error) 54 55 // DecodeConfigは、画像全体をデコードすることなく、GIF画像のグローバルカラーモデルと 56 // 寸法を返します。 57 func DecodeConfig(r io.Reader) (image.Config, error)