blog/source/_posts/APNG--PNG的另一种表现方法,GIF的改版?.md
2024-02-01 19:45:45 +08:00

7.5 KiB
Raw Blame History

title date tags categories permalink index_img
APNG--PNG的另一种表现方法GIF的改版 2018/8/7 20:10
APNG
Firefox
GIF
IE
PNG
动图
技术 268.html https://xtaolink.cn/f/panda-waving.png

Chrome 59开始支持apng至此仅IE浏览器不支持。

APNG 制作可以试试 screenToGif 可以录屏转gif视频以及apng很强大。

一、初来乍到,先做自我介绍

APNG, 全称是“Animated Portable Network Graphics”, 是PNG的位图动画扩展可以实现png格式的动态图片效果。但是我的爸爸PNG一直都不认可我认为我是个野种。唉往事说起来就长了。想当年爸爸PNG亲手带过一个孩子名叫MNG的图像格式希望可以成为PNG动画的标准主流。可惜MNG不争气过多浪费社会资源以至于爸爸他自己都懒得管他。

好在Mozilla并不嫌弃我一直乐此不疲抚养我长大希望有朝一日能够代GIF成为下一代动态图的标准。对了我今年10岁了我是2004年出身的由于大家诸多浏览器不支持我尤其我爸爸PNG坚决不认我可是亲生的还死守着那个不中用的MNG, 所以之前我一直都是默默无闻的成长,但是,最近发生了一件事情让我开始受到大家的关注。

虽然说Chrome等Blink/webkit内核浏览器忙着宠爱自己的孩子webP, 而对APNG依然不闻不问但是有了iOS的支持APNG仿佛看到了一统江湖的曙光

二、戒骄戒躁,基本特性介绍

由于下面APNG的称述有很多的APNG的实地示例如果你想看到真实的动画效果建议使用FireFox浏览器或者Safari 8浏览器或者 安装APNG解码插件

为什么不同浏览器APNG会显示不同的面目呢这就是APNG比较赞的特性啊超自然向下兼容。要问原因就要讲讲APNG的构成原理啦首先APNG是个PNG动图跟Gif动图一样是由很多帧构成的。其中第1帧就是一张标准的PNG图片后面的帧不仅包含PNG图片还有剩余的动画和帧速等数据。于是如果浏览器不认识APNG后面的动画数据没关系因为第1帧是标准的可以无障碍显示如果支持自然就后面的帧走起动画效果就有了

拿APNG靓丽的头像举例APNG的头像是个2帧的APNG图片第1帧就是一张标准的“你的浏览器不支持APNG”字样的PNG图片第2帧为“你的浏览器支持APNG”字样的图片以及帧播放间隔时间、播放次数等数据。于是Chrome浏览器就显示帧1因为不认识APNGFireFox显示帧2动画仅播放1次pingwest上的一篇译文

一些特有名词大家不必关心(实在有兴趣,可以看这里主要看SVG图形中的三个箭头没错是SVG, IE7/IE8绕行可以看到第1帧IDAT还是IDAT(png还是那个png, 所有浏览器都认识的png), 但是后面第2帧和第3帧IDAT变成了fdAT, 乱入了其他些东西(不是标准png了)。

说了这么多还没大肆宣扬下APNG和gif相比的好处呢。虽明显的差别在于图片质量, gif最多支持256种颜色不支持Alpha透明通道。这两个问题导致gif往往在这两者图形动画上质量很糟糕:

  1. 色彩丰富的图片例如视频gif截图颜色不够使啊;

  2. 含半透明效果的图片要么全透要么实色。大家可以看下面的对比图来自APNG养父mozilla官方感受下免得说APNG小女子卖瓜——屌丝皆夸

细腻的效果牺牲的是图片的大小但这只是对色彩丰富、含Alpha半透明的图片色彩不丰富可以使用FireWork保存为png8 Alpha透明大小跟gif一样甚至更小

说到对比不得不提APNG的竞争对手webP. 其也可以实现高质量的图片动画。其浏览器支持统治了Chrome以及Android. 每个爸爸都有私心APNG爸爸不鸟webP这个孩子webP的爸爸不鸟我。唉未来APNG和webP谁更受一筹还真不得而知。目前来看APNG支持FF/Sarari和iOS, webP是Chrome/Opera和Android. 可谓各得半壁江山。鹿死谁手,还真不好说。

三、大家同心、其利断金

iOS8对APNG的支持意义深远表明高质量的动态图片可以开始占领移动端了PC端由于IE什么都不支持呵呵阻碍了发展。于是一些以前不太好处理的功能就有了新的技术选项。

OK, 举个例子之前国际版QQ有一个闪屏动画较复杂细腻动感。由于Gif动画图片质量堪比罗玉凤于是放弃最后还是客户端内嵌视频实现的效果。但是现在iOS8支持了APNG, 于是高质量的动画效果有了新的技术解决方案。设计师直接自己做好APNG动画图片给开发一个简单的内嵌页动画可以随时更新节日什么的效果又很赞至于Android, 可以使用webP.

对于普通的web app页面我们也可以让APNG和webP双剑合璧通过判断显示不不同的动画格式实现我们想要的细腻动画效果赞不赞嗲不嗲

四、APNG制作火火火火(这是令人激动的,因为上面没人看)

关于APNG的资源你只要去这一个地方就好了http://littlesvr.ca/apng/. 几乎有所有的APNG制作软件(目前9个)还有APNG转GIF, GIF转APNG以及反编译APNG的软件页面偏下位置

逗比是使用下面这个软件制作我的:APNG Anime Maker. 这个页面下载的(最后一个)。软件很小巧,直接打开免安装。步骤如下:

打开软件点击open, 选中序列图片们,调整每张图片间隔时间默认100毫秒总播放次数等信息。调成1000毫秒点击箭头所示按钮应用在所有图片上。loop为0表示无限循环。点击save保存图片

于是就有下面这几种APNG动图

五、参考资源

  • Animated PNG graphics
  • APNG Specification
  • wiki-APNG
  • 低画质的GIF横行网络20年了更优秀的APNG为什么没能取代它
  • http://littlesvr.ca/apng/