PNG
众所周知,PNG 是很常用的图片格式。先前在 dino.lol 生成不同颜色的像素小恐龙的时候,对 PNG 做了一些了解。这里做个简单地介绍。
PNG 的动画方案
我也是看过了维基百科之后,才了解到 PNG 是为了取代 GIF 而产生的,虽然我们对 PNG 的一般了解往往停留在“动图”上。
然后 PNG 也是有动画方案的,早期有 MNG,后来有更简单而强大的 APNG。APNG 的图像更为流畅,并且不会产生锯齿。PNG 内含多个数据块,并且允许图像查看器舍弃不认识的数据块。APNG 图像格式同样为 .png,这样对于不支持 APNG 的查看器,可以显示其第一帧。
elephant.gif VS elephant.png, 图像来自:https://apng.onevcat.com/demo/
GIF
APNG
PNG 的索引模式
PNG 除了通常的颜色模式,还支持灰度和索引。这个索引模式,在某些情况下有很大用处。索引模式下,图片有限的颜色会编为一个调色板,而每个像素的颜色值,会用调色板的索引值来代替。这样一方面会减少大量的体积,另一方面在替换颜色上会比较快捷。
就拿我给像素恐龙换颜色来说,一张图片只有五个颜色。那么如果我想把恐龙头上的红色替换为蓝色,只需要在调色板中找到颜色对应的索引,然后更改调色板中的颜色,保存就可以了,而不需要逐个对颜色进行替换。
也就是说,如果颜色比较少的时候,比如小图标,直接用图片的索引模式会节省大量空间。
图为使用 photopea.com 导出 PNG 图片时,窗口中的 Don’t use palettes 选项。如果未勾选,则导出索引模式的 PNG 图片。否则则为 RGB 模式。