处理apng文件的python模块。

apng的Python项目详细描述


https://travis-ci.org/eight04/pyAPNG.svg?branch=masterDocumentation Status

处理apng文件的python模块。

功能

  • 将多个图像合并到一个APNG文件中。(它使用枕头将图像转换为PNG格式)
  • 读取apng文件并将每个帧提取到png文件中。
  • 它不做任何优化,只对图像进行浓缩。这在将来可能会改变。

依赖关系

  • Pillow-可选。您仍然可以使用不带pil的pyapng,但它只能读取png文件。

开发依赖性

  • pngcheck
  • 有关其他开发依赖项,请参见Requirements.txt。

安装

来自pypi

pip install apng

用法

将一系列图像转换为APNG动画:

fromapngimportAPNGAPNG.from_files(["1.jpg","2.jpg","3.jpg"],delay=100).save("result.png")

使用不同的延迟:

fromapngimportAPNGfiles=[("1.jpg",100),("2.jpg",200),("3.jpg",300)]im=APNG()forfile,delayinfiles:im.append_file(file,delay=delay)im.save("result.png")

从APNG文件中提取帧:

fromapngimportAPNGim=APNG.open("animation.png")fori,(png,control)inenumerate(im.frames):png.save("{i}.png".format(i=i))

将文本块添加到PNG文件:

fromapngimportPNG,make_text_chunkim=PNG.open("image.png")im.chunks.append(make_text_chunk(key="Comment",value="Some text"))im.save("image.png")

性能

如果要将一些大的jpg转换为动画,库必须将jpg转换为png,然后将它们合并为单个动画apng文件。问题是:

  1. 非常慢。
  2. APNG的文件大小非常大。可能是原作的5倍或更多。

在这种情况下,我建议尝试一种叫做“UGIRAA”的动画格式,这是由Pixv.NET实现的。还有一个名为“HoneyView”的图像查看器,可以在本地查看它。

待办事项

  • 添加优化器?

更改日志

  • 0.3.3(2019年2月11日)
    • 修复:无法提取包含多个fdAT块的帧。
  • 0.3.2(2018年7月20日)
    • 添加:make_text_chunk函数。
    • 添加:Chunk数据类。
    • 更改:现在parse_chunks产生Chunk,而不是元组。这应该是安全的,因为Chunk是一个namedtuple。
  • 0.3.1(2018年5月13日)
    • 附加:万向轮。
  • 0.3.0(2018年5月13日)
    • 支持Python2。
    • 添加:png方法open_anyfrom_bytes
    • 添加:apng方法append_filefrom_bytes
    • 添加:模块函数parse_chunks
    • drop:module函数“是png”和“chunks”。
    • change:`png.open`现在只读取png图像。若要读取非PNG图像,请使用“png.open_any”。
    • change:`apng.append`现在只接受'png'实例。若要附加PNG文件,请使用“apng.append_file”。
  • 0.2.1(2018年4月19日)
    • 附加:支持num_plays。(#4
  • 0.2.0(2017年12月8日)
    • 添加测试。
    • 添加文档。
    • 添加:支持类似路径的对象。
    • 修正:一些块必须出现在IDAT之前。(#1
    • 修正:更改APNG中的块顺序。一些块被移到文件的末尾。
    • 修复:删除trns hack。
    • 修正:是不是PNG不应该移动文件指针。(#2
  • 0.1.0(2016年5月30日)
    • 第一次释放。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java文件分块,获取长度字节   java嵌入式Tomcat不执行jsf页面   java我的数据库中有2个实体,但hibernate返回其中6个。   java如何基于逗号拆分字符串   java取消已经运行的CompletableFutures的预期模式是什么   java如何在informix中从另一个数据库复制表ddl和数据   为什么图片是黑色的?   java根据字符串数组中的单词筛选列表   Java8的集合。平行流有效吗?   Kotlin中的java静态内部类   java如何在GUI中生成一列字符串   javafx如何正确使用高对比度主题?   带空格的javascript Httpurlconnection参数   java如何设置GridBagLayout的约束   java如何在一个线程可能尚未初始化时关闭另一个线程   java将简单时间格式转换为特殊时间格式(hhmmt)   安卓/java阵列重复过滤器的问题   java在队列的链接实现下,入队和出队是如何工作的   java更新sql外键约束