GIF (.gif)
予備知識
-
- 登録MIMEタイプ:image/gif
- GIFラスタ画像形式.
- 一般に,Web上で静的な,あるいはアニメーションのグラフィックスに使用される.
- GIFはGraphics Interchange Formatの頭字語である.
- バイナリ形式.
- 8ビットカラーパレットに制限した後,LZW可逆圧縮を使う.
- 透過性をサポートする.
- 1987年にCompuServeによって開発された.
ImportとExport
- Import["file.gif"]はGIFファイルをインポートし,単一のImageオブジェクトまたは画像のリストを返す.
- Import["file.gif",elem]はGIFファイルから指定された要素をインポートする.
- インポート形式はImport["file","GIF"]またはImport["file",{"GIF",elem,…}]で指定できる.
- Export["file.gif",expr]はグラフィックス,画像,任意の他の式をGIFにエキスポートする.
- Export["file.gif",{expr1,expr2,…}]はグラフィックスまたは画像のリストをアニメーションとしてエキスポートする.
- Export["file.gif",Manipulate[…]]はManipulateオブジェクトをアニメーション化したデモをエキスポートする.
- Wolfram言語のグラフィックスまたは任意の式をGIFにエキスポートすると,結果の画像はその表示形式と同じラスタサイズとなる.
- デフォルトでは画像オブジェクトはそのラスタサイズでエキスポートされる.
- GIFはラスタ画像形式なので,フォントはすべてエキスポートの際にラスタライズされる.
- 一般的な情報は,以下の関数ページを参照のこと.
-
Import,Export ファイルからインポートするあるいはファイルへエキスポートする CloudImport,CloudExport クラウドオブジェクトからインポートするあるいはクラウドオブジェクトへエキスポートする ImportString,ExportString 文字列からインポートするあるいは文字列へエキスポートする ImportByteArray,ExportByteArray バイト配列からインポートするあるいはバイト配列へエキスポートする
要素
- 一般的なImport要素:
-
"Elements" ファイル中の有効な要素とオプションのリスト "Summary" ファイルの概要 "Rules" 使用可能なすべての要素の規則のリスト - データ表現要素:
-
"Data" RGBカラー値の配列 "Graphics" Graphicsオブジェクトとして与えられる,GIFファイルの最初のフレーム "Image" Imageオブジェクトとして与えられる,GIFファイルの最初のフレーム "RawData" カラーマップ指標の配列 "Thumbnail" 最初の画像のサムネイル - アニメーションGIFファイルのデータ表現要素:
-
"Animation" アニメーションオブジェクトとして表されたアニメーションGIF {"GraphicsList",frames} Graphicsオブジェクトのリストとしての,アニメーションGIFのフレーム(デフォルトでは,frames=All) {"ImageList",frames} Imageオブジェクトのリストとしての,アニメーションGIFのフレーム(デフォルトでは,frames=All) {"ThumbnailList",frames} サムネイルのリスト(デフォルフトでは frames=All) - Importはデフォルトで静的GIFには"Image"要素を,アニメーションGIFには"ImageList"を使用する.
- アニメーションGIFのImportの際に要素"Image"を指定すると,アニメーションの最初の1フレームが返される.
- Exportはデフォルトで与えられた式が画像またはManipulateのリストならアニメーションGIFを,その他の場合は静的GIFを生成する.
- Exportの際に要素"Graphics"あるいは"Image"が指定されている場合は必ず静的GIFが生成される.
- 高度なImport要素:
-
"AnimationRepetitions" アニメーションが停止するまでに何回再生するか "Background" 透明画像領域に示される背景色 "BitDepth" ファイルの各色チャンネルを表すのに使用されるビット数 "Channels" ファイルで使用される色チャンネルの数 "ColorMap" 色の値のリストとして与えられる,減色パレット "ColorSpace" ファイルで使用されている色符号化 "Comments" ファイルに保管されたユーザのコメント "DisplayDurations" アニメーションフレームの表示時間(秒) "DisposalOperation" 次のフレームの作成前の処分操作 "GlobalColorMap" 個々のアニメーションフレームでデフォルトで用いられるカラーパレット "ImageCount" アニメーションGIFのフレーム数 "RasterSize" ラスタ次元 "Summary" ファイルの概要 "SummarySlideView" 全フレームのスライドビューによる概要 "TransparentColor" 透明として解釈すべき色 - アニメーションGIFのから"ColorMap"要素をインポートすると,全フレームのカラーマップがリストとして返される.
- GIFは最大256色のカラーパレットをサポートし,色チャンネルにつき8ビットの解像度で色を保存する.
- "DisposalOperation"は次のフレームを作成する前に現在のフレームをどのように処分するかを指定する.以下のような設定が可能である:
-
"None" 処分しない "Background" 背景色で置き換える "Previous" 前のフレームで置き換える Missing["NotAvailable"] 欠損した処分操作
例題
すべて開く すべて閉じる例 (4)
Import["ExampleData/rose.gif"]Import["ExampleData/rose.gif", "Summary"]Import["ExampleData/wave.gif"]Import["ExampleData/wave.gif", "AnimatedImage"]Export["tiger.gif", [image]]スコープ (3)
Export["expr.gif", 1 / (x ^ 4 - 1)]Import["expr.gif"]Import["ExampleData/cellularautomaton.gif"]Import["ExampleData/cellularautomaton.gif", "AnimatedImage"]Graphics式のリストをエキスポートしてアニメーションGIFを作成する:
Export["disk.gif", Table[Graphics[{Red, Disk[{Cos[t], Sin[t]}]}, ImageSize -> 100, PlotRange -> 2{{-1, 1}, {-1, 1}}, Background -> Blue], {t, 0, 2Pi, 0.2} ]]Import["disk.gif", "AnimatedImage"]Import要素 (26)
利用できる要素 (3)
Import["ExampleData/rose.gif", "Elements"]Import["ExampleData/rose.gif", "Rules"]//ShortImport["ExampleData/rose.gif", "Options"]"Options"要素はインポートされた画像に保存されたものとは異なる:
Import["ExampleData/rose.gif"]//Optionsデータ表現 (11)
"Animation" (1)
"ColorMap" (1)
アニメーションGIF画像の最初のフレームから減色パレットを取得する:
(map = Import["ExampleData/wave.gif", {"ColorMap", 1}])//ShortMapThread[Rule, {Range[1, Length[map]], RGBColor@@@(map / 255.)}]生のデータにカラーマップを適用して,保存されている画像を作成する:
(data = Import["ExampleData/wave.gif", {"RawData", 1}])//ArrayPlotImage[data /. MapThread[Rule, {Range[1, Length[map]], map}], "Byte"]"Data" (1)
"Graphics" (1)
Graphicsオブジェクトとしてインポートする:
Import["ExampleData/rose.gif", "Graphics"]Head[%]"GraphicsList" (1)
"GlobalColorMap" (1)
(map = Import["ExampleData/rose.gif", "GlobalColorMap"])//ShortRGBColor@@@(map / 255.)//Short生のデータにカラーマップを適用して,保存されている画像を作成する:
data = Import["ExampleData/rose.gif", "RawData"];Image[Map[map[[#]]&, data], "Byte"]"Image" (1)
ファイルをImageオブジェクトとしてインポートする:
Import["ExampleData/rose.gif", "Image"]Head[%]これはフレームを1つだけ含むGIFのデフォルトのインポート要素である:
Import["ExampleData/rose.gif"]"ImageList" (1)
これはマルチフレームGIFのデフォルトのインポート要素である.
データをImageオブジェクトのリストとして取得する:
Import["ExampleData/wave.gif", "ImageList"]"RawData" (1)
(data = Import["ExampleData/rose.gif", "RawData"])//ShortArrayPlot[data]map = Import["ExampleData/rose.gif", "GlobalColorMap"];Image[Map[map[[#]]&, data], "Byte"]"Thumbnail" (1)
メタデータ (12)
"AnimationRepetitions" (1)
"Background" (1)
"BitDepth" (1)
"ColorSpace" (1)
Import["ExampleData/rose.gif", "ColorSpace"]インポートされた画像の色空間の取得にはImageColorSpaceを使用する:
Import["ExampleData/rose.gif"]//ImageColorSpace"Comments" (1)
"DisplayDurations" (1)
"DisposalOperation" (1)
"ImageCount" (1)
"ImageSize" (1)
Import["ExampleData/rose.gif", "RasterSize"]インポートされた画像に対してImageDimensionsを適用しても同じ結果が得られる:
ImageDimensions@Import["ExampleData/rose.gif"]Importオプション (3)
ImageResolution (1)
"ImageTopOrientation" (1)
Exportオプション (12)
"AnimationRepetitions" (1)
"ColorMapLength" (1)
"ControlAppearance" (1)
Manipulateのコントロールメニューもエキスポートするかどうかを指定する:
m = Manipulate[Plot[Sin[x(1 + a x)], {x, 0, 6}], {a, 0, 2}]ImportString[ExportString[m, "GIF", "ControlAppearance" -> None], "Image"]ImportString[ExportString[m, "GIF", "ControlAppearance" -> "Generic"], "Image"]"DisplayDurations" (1)
Dithering (1)
"Interlaced" (1)
"QuantizationMethod" (1)
RasterSize (1)
"TransparentColor" (1)
Export["file.gif", [image], "TransparentColor" -> Red]Import["file.gif", "TransparentColor"]透明色はTransparentで置き換えられる:
Import["file.gif"]"DisposalOperation" (3)
透明の背景色とデフォルトの"DisposalOperation"でアニメーションGIFをエキスポートする:
list = {[image], [image], [image], [image]};Export["animation.gif", list, "TransparentColor" -> White]Import[%]常に新しい(背景色で塗りつぶされた)背景でフレームを描画するためには, "DisposalOperation"->"Background"を使用する:
Export["animation.gif", list, "TransparentColor" -> White, "DisposalOperation" -> "Background"]Import[%]list = {[image], [image], [image], [image]};Export["animation.gif", list, "TransparentColor" -> White, "DisposalOperation" -> {None, "Background", None, "Background"}]Import[%]最初のフレームの処分操作としてNoneを指定し,"Previous"と"Background"の操作との違いを見る:
list = {[image], [image], [image], [image]};Export["previous.gif", list, "TransparentColor" -> White, "DisposalOperation" -> {None, "Previous", "Previous", "Previous"}]Import[%]Export["background.gif", list, "TransparentColor" -> White, "DisposalOperation" -> {None, "Background", "Background", "Background"}]Import[%]考えられる問題 (1)
アニメーションGIFがさまざまな表示時間を持つ場合, "Animation"としてインポートするとすべてのフレームについて平均の表示時間を使用する:
times = Import["ExampleData/wave.gif", "DisplayDurations"]Import["ExampleData/wave.gif", "Animation"]list = Import["ExampleData/wave.gif", "ImageList"];image = list[[1]];Dynamic[image]Table[image = list[[i]];Pause[times[[i]]];, {i, Length[list]}];テクニカルノート
関連するガイド
-
▪
- Webページの作成 ▪
- グラフィックスのインポートとエキスポート ▪
- 画像処理 ▪
- インポートとエキスポート ▪
- 全形式のリスト ▪
- マルチメディア形式 ▪
- 数値データ ▪
- ラスタ画像形式 ▪
- Web形式 ▪
- Webの操作
履歴
1999 で導入 (4.0) | 2019 で更新 (12.0) ▪ 2021 (12.3) ▪ 2022 (13.1) ▪ 2022 (13.2) ▪ 2024 (14.1) ▪ 2026 (15.0)