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)