Pillow APNG序列

2021-07-09 16:38 更新

PNG 加载程序包括对读取和写入动画便携式网络图形 (APNG) 文件的有限支持。加载 APNG 文件时,​get_format_mimetype() ​将返回"image/apng"。当​n_frames​属性大于 1时,该​is_animated​ 属性的值将是​TRUE​。对于 APNG 文件,​n_frames​属性取决于动画帧数以及默认图像的存在与否。有关详细信息,请参阅下面的 ​default_image​属性文档。它支持 ​seek()​ 和 ​tell()​方法。

im.seek() ​提出一个 ​EOFError​ 如果你试图寻找最后一帧。

这些 ​info ​在适用的情况下,将为APNG设置以下属性:

  • default_image​ 指定此APNG文件是否包含单独的默认图像,该图像不是实际APNG动画的一部分。
    当APNG文件包含默认图像时,初始加载的图像(即 ​seek(0)​ )将是默认图像。要说明默认图像的存在,则​ n_frames​ 属性将设置为 ​frame_count + 1 ​,其中 ​frame_count ​是实际的APNG动画帧计数。要加载第一个APNG动画帧, ​seek(1)​ 必须被调用。
    True ​-APNG包含默认图像,它不是动画帧。
    False ​-APNG不包含默认图像。这个 n_frames 属性将设置为实际的APNG动画帧计数。最初加载的图像(即。 seek(0) )将是第一个APNG动画帧。
  • loop​ 循环此APNG的次数,0表示无限循环。
  • duration​ 显示此APNG帧的时间(毫秒)。

 APNG 加载程序返回与 APNG 文件的逻辑屏幕大小相同大小的图像。在应用任何 APNG 帧处理和帧混合操作之后,返回的图像包含给定帧的像素数据(即它包含 Web 浏览器将为该帧渲染的内容 - 所有先前帧和该帧的合成)。

任何包含序列错误的 APNG 文件都被视为无效图像。APNG 加载程序不会尝试修复和重新排序包含序列错误的文件。

保存

当调用​save()​时,默认情况下只会保存单帧 PNG 文件。保存APNG文件(包括单帧APNG),save_all 参数必须设置为True。还可以设置以下参数:

  • default_image​  布尔值,指定基础图像是否为默认图像。如果​True​,则基本图像将用作默认图像,​append_images​序列中的第一个图像将是第一个 APNG 动画帧。如果​False​,则基础图像将用作第一个 APNG 动画帧。默认为​False​。
  • append_images​  作为附加帧附加的图像的列表或元组。列表中的每个图像可以是单帧或多帧图像。每个帧的大小应该与基本图像的大小相匹配。另外请注意,如果帧的模式与基础图像的模式不匹配,则该帧将转换为基本图像模式。
  • loop​ 循环此APNG的整数次,0表示无限循环。默认为0。
  • duration​  整数(或整数的列表或元组)显示此APNG帧的时间长度(毫秒)。默认为0。
  • disposal​  一个整数(或整数的列表或元组),指定在呈现下一帧之前要用于此帧的APNG处理操作。默认为0。
    0 (​APNG_DISPOSE_OP_NONE ​,默认)-在渲染下一帧之前,不会对该帧执行任何处理
    1 ​(PIL.PngImagePlugin.APNG_DISPOSE_OP_BACKGROUND​ )-在渲染下一帧之前,此帧的修改区域被清除为完全透明的黑色。
    2 (​APNG_DISPOSE_OP_PREVIOUS​ )-在呈现下一帧之前,此帧的修改区域将恢复为上一帧的内容。
  • blend​ 一个整数(或整数的列表或元组),指定要在呈现下一帧之前用于此帧的APNG混合操作。默认为0。
    0 (​APNG_BLEND_OP_SOURCE ​)-此帧的所有颜色分量(包括alpha)覆盖先前输出的图像内容。
    1 (​APNG_BLEND_OP_OVER ​)-此帧应与以前的输出图像内容进行alpha合成。

这个 ​duration ​, ​disposal ​和 ​blend ​参数可以设置为列表或元组,以指定动画中每个帧的值。列表或元组的长度必须与APNG动画中实际帧的总数相同。如果APNG包含默认图像(即。 ​default_image ​设置为 ​True​ ),这些列表或元组参数不应包含默认图像的条目。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号