GIF (.gif)
背景
-
- 注册的 MIME 类型:image/gif
- GIF 光栅图像格式.
- 常用于网页中的静态和动画图形.
- GIF 是 Graphics Interchange Format(图形交换格式)的缩写.
- 二进制格式.
- 限制后使用 LZW 无损压缩至 8 位调色板.
- 支持透明度.
- 由 CompuServe 于 1987 年开发.
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" GIF 文件的首帧,以 Graphics 对象的形式给出 "Image" GIF 文件的首帧,以 Image 对象的形式给出 "RawData" 彩色地图索引数组 "Thumbnail" 首个图像的缩略图(默认 - 动画 GIF 文件的数据表示元素:
-
"Animation" 被表示为动画对象的动画 GIF {"GraphicsList",frames} 动画 GIF 的帧,以 Graphics 对象列表的形式表示(默认 frames=All) {"ImageList",frames} 动画 GIF 的帧,以 Image 对象列表的形式表示(默认 frames=All) {"ThumbnailList",frames} 缩略图列表(默认 frames=All) - 默认情况下,对于静态 GIF,Import 使用 "Image" 参数,动画 GIF 使用 "ImageList".
- 具有参数 "Image" 的动画 GIF 的 Import 给出动画的首帧.
- 默认情况下,如果所提供表达式为图像列表或一个 Manipulate,Export 生成一个动态 GIF,请他情况为静态 GIF.
- 具有参数 "Graphics" 或 "Image" 的 Export 总是产生一个静态的 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"] 缺少处理操作
导出的选项
- Export 为 GIF 格式的选项与导出为 Rasterize 格式的选项相同,不同之处及更多选项如下所示:
-
"ColorMapLength" Automatic 用于量化的颜色数目 "ColorMapMode" "Local" 是否创建本地或全域色表 Dithering "FloydSteinberg" 抖动算法用于创建褪色表格 ImageFormattingWidth $ImageFormattingWidth 格式化对象时的目标宽度 ImageSize Automatic 图像总体大小 "ImageTopOrientation" Top 存储在文件中图像方向 "QuantizationMethod" Automatic 用于量化的方法 RasterSize Automatic 图像尺寸 "TransparentColor" Automatic 解释为透明的颜色 - 默认情况下,图像按全尺寸导出,通常具有自动量化.
- "ColorMapLength"的值可以是不大于 256 的正整数.
- "ColorMapMode" 的可能设置为 "Local" 或 "Global".
- "Dithering" 的可能设置为 "FloydSteinberg" 或 None.
- "ImageTopOrientation" 的可能设置为 Automatic、Top、Bottom、Left 或 Right.
- "QuantizationMethod" 的可能设置为 Automatic、"MedianCut"、"MinVariance" 或 "Octree".
- 动画 GIF 的 Export 选项:
-
AnimationRepetitions Infinity 停止前,动画被播放多少次 "ControlAppearance" Automatic 在导出文件中如何渲染 Manipulate 控件的元素 "DisplayDurations" Automatic 每帧显示的持续时间,以秒为单位 "DisposalOperation" Automatic 创建下一帧之前执行的操作 "Interlaced" False 是否以隔行扫描的形式存储图形并允许渐进渲染 "RemoveDuplicatedFrames" False 是否删除重复的帧 - "ControlAppearance" 接受以下设置:
-
Automatic 运用本地计算机系统的风格元素,截取与在笔记本中完全相同的用户控制 "Generic" 以通用样式呈现图形控制 None 在导出动画时,排除控制参数 - "DisplayDurations"->{d1,d2,…} 指定动画 GIF 中每帧显示的持续时间. 如果显示的持续时间列表短于帧数,序列按需重复.
- "DisposalOperation" 的可用值为:
-
Automatic 或 None 不可处理 "Background" 用背景颜色替换 "Previous" 用前一帧替换
范例
打开所有单元 关闭所有单元基本范例 (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"]导入元素 (26)
可用元素 (3)
Import["ExampleData/rose.gif", "Elements"]Import["ExampleData/rose.gif", "Rules"]//ShortImport["ExampleData/rose.gif", "Options"]Import["ExampleData/rose.gif"]//Options数据表示 (11)
"ColorMap" (1)
(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[%]"GlobalColorMap" (1)
(map = Import["ExampleData/rose.gif", "GlobalColorMap"])//ShortRGBColor@@@(map / 255.)//Shortdata = Import["ExampleData/rose.gif", "RawData"];Image[Map[map[[#]]&, data], "Byte"]"Image" (1)
将文件导入为 Image 对象:
Import["ExampleData/rose.gif", "Image"]Head[%]Import["ExampleData/rose.gif"]"ImageList" (1)
获取数据作为 Image 对象列表:
Import["ExampleData/wave.gif", "ImageList"]"RawData" (1)
元数据 (12)
"AnimationRepetitions" (1)
"Background" (1)
"ColorSpace" (1)
Import["ExampleData/rose.gif", "ColorSpace"]用 ImageColorSpace 获取导入图像的色彩空间:
Import["ExampleData/rose.gif"]//ImageColorSpace"DisplayDurations" (1)
"DisposalOperation" (1)
"ImageSize" (1)
Import["ExampleData/rose.gif", "ImageSize"]对导入图像使用 ImageDimensions可给出相同结果:
ImageDimensions@Import["ExampleData/rose.gif"]导入选项 (2)
"ImageTopOrientation" (1)
导出选项 (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)
ImageSize (1)
"Interlaced" (1)
"QuantizationMethod" (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]}];历史
1999年引入 (4.0) | 在以下年份被更新:2019 (12.0) ▪ 2021 (12.3) ▪ 2022 (13.1) ▪ 2022 (13.2) ▪ 2024 (14.1) ▪ 2026 (15.0)