[部分过期]PNG格式也可以是动图?手把手教你做APNG动图

您所在的位置:网站首页 png是视频吗 [部分过期]PNG格式也可以是动图?手把手教你做APNG动图

[部分过期]PNG格式也可以是动图?手把手教你做APNG动图

#[部分过期]PNG格式也可以是动图?手把手教你做APNG动图| 来源: 网络整理| 查看: 265

B站目前已拦截任何APNG格式上传前言

之前我发过一条迷惑动态投票,不知道有没有人记得,我相信不少人在这个投票中十分迷惑自己到底应该选什么,特别是对于部分Android用户(webview 版本>=59)来说,系统不支持apng格式,在点进动态之前明明看到是第二张图有我头像,而进去后却是第一张图,不知道应该选什么?

迷惑动态你在那张图看到我头像了呢?

上一次的投票结果可以点这里查看。

认识APNG格式

APNG(Animated Portable Network Graphics)格式是PNG的位图动画扩展,但未获PNG组织官方认可。其扩展方法类似GIF 89a,仍对原版PNG保持向下兼容。APNG第1帧为标准PNG图像,剩余的动画和帧速等数据放在PNG扩展数据块,因此只支持原版PNG的软件会正确显示第1帧。APNG与Mozilla社区关系密切,格式标准文档设在Mozilla网站。

来源:维基百科(中文)

首先,我们来看APNG的维基百科,我们应该会注意到这个关键点"PNG的位图动画扩展",对,APNG格式是在PNG格式的基础上加增加内容实现的。这时候应该会有人提问:为什么加了新的东西进去之后对于不支持apng格式的地方依然能够显示出一个静态图像啊?为什么能够有这种向下兼容性啊?

我想这就要看PNG格式的文档了,PNG格式定义了4种标准的关键数据块( IHDR , PLTE , IDAT , IEND )和14种辅助数据块( tRNS , cHRM , gAMA , iCCP , sBIT , sRGB , iTXt , tEXt , zTXt , bKGD , hIST, pHYs, sPLT , tIME ),同时允许程序添加私有数据块,对于解码器的要求是能够解析4个标准的关键块,可以忽略辅助数据块的,遇到不认识的辅助数据块可以直接忽略掉,遇到不认识的关键数据块则是报错(因为无法保证程序是否正确按照编码器的目标解析)。

简单的说,就是PNG可以安全的通过添加辅助数据块的方式来扩展PNG格式。

再来看APNG格式这边都干了什么呢?APNG在PNG格式的基础上,添加了3种辅助数据块( acTL , fcTL , fdAT ),分别是动画控制块acTL,fcTL帧控制块,fdAT帧数据块,同时要求将第一帧按照标准PNG的格式存储,这就保证了不认识apng格式的程序在忽略掉apng数据后依然能够正确的解析出第一帧的图像并以静态的形式显示出来。

所以大家可以安全放心的使用apng格式。

顺带一提,目前OBS(本人测试版本23.2.1,OBS-Browser 2.4.0 , CEF 3.3440.1805.0 )对于APNG格式的支持是似乎是不完整的,能够识别到忽略第一帧的设定,但不能显示出动画效果,如果需要用到APNG格式的图片可以以浏览器源的形式添加到画面中。

制作一张APNG图片

制作一张APNG格式图片的方式很多种,我个人比较常用的方法是使用APNG Assembler来制作,因为体积比较小,也就445kb,zip压缩后之后220kb,所以我在这里以图种(保存图片改后缀名)的方式提供备份下载,如果改后缀名后使用7z打不开的话可以右键7-zip -> 打开压缩包 ▸ -> zip来打开,(这个与7z识别压缩包类型的方式有关,这里等于强制他去找zip的文件头),也可以到APNG Assembler的项目主页下载。

https://sourceforge.net/projects/apngasm/

图种

(顺带吐槽句破站对于原创文章直接全文禁止选择复制,却不提供一个可复制区域的东西,评论区会再发一次地址的)

APNG Assembler 打开界面图

工具有了,就应该也准备下原材料吧,既然是玩APNG格式动图,就应该玩动图嘛,所以我们就准备两张或以上的相同分辨率的PNG图片,制作的时候可以在PS或AE中制作出想要的效果,输出(渲染视频)的时候选择图像序列,格式为PNG,(PS也是可以制作视频的,谁让他有个时间轴面板呢?)。我这里以数字1234为例子,每个数字显示1秒。

例子所用材料

首先,我们把图片按顺序拖入到工具中,如果错了可以按delete键或右键点Delete Frame删除所选项。

拖完文件后的样子。

因为我们4张图片都是显示一秒,我们可以点Delays - All Frames 输入 1 / 1 秒,点Set设置,如果要改单帧或部分帧的延时,可以选中要修改的帧,右键选Set Delay 或点击 Delays - Selected Frames 设置。

所有帧延时设置

最后我们点Output File文本框旁边的三个点选下保存位置和文件名,按Make Animated PNG就会开始生成APNG图片,进度条走完就生成完了。。。

成品

到此,你已经学会如何制作一张APNG格式的图片了。

   (再顺带点名表扬 @猫耳滑稽菌 (UID:11374612),看到我动态后光速制作了一个疯狂旋转的我,,,)

我相信好奇的你一定想知道另外两个按钮有什么用?

Playback Setting 回放设置,在弹出的对话框可以设置播放次数以及是否跳过第一帧

播放5次,跳过第一帧

Compression Setting 压缩设置,我自己也没摸清到底怎么设置可以让图片更小一点,保持默认就好了。

最后

这里又来一次相同投票哦。不过我相信这次应该不迷惑,因为根据B站客户端的设计情况,大概可以反应大家设备浏览器的新旧情况了。。。

你在那张图看到我头像了呢?

延展阅读:

https://zh.wikipedia.org/wiki/APNG  APNG - 维基百科,自由的百科全书

https://www.w3.org/TR/2003/REC-PNG-20031110/  W3C关于PNG格式的规范(英文)

https://wiki.mozilla.org/APNG_Specification  APNG格式规范



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3