我有数以百万计的.PNG图像都有相同的颜色。我想使用这些知识,以便以下列方式节省一些空间:强制所有文件使用相同的调色板并仅存储IHDR和IDAT部分,并对所有文件使用相同的PLTE。然后我会在请求图像时注入PLTE。因为这不是微不足道的我要问的是这是合理的做法吗?我错过了一些障碍吗?这个问题有另一种方法吗?最初的观察是,这将节省约15%的存储量。
如果没有存储PLTE部分,请检查单个图像的节省空间:
答案 0 :(得分:1)
以灰度格式(而不是pal索引)对图像进行编码。将调色板保存在单独的文件中。
在图像请求上更改为返回索引调色板并注入调色板条目。
答案 1 :(得分:1)
看起来成本太高(开发用于存储和重建无效PNG文件的软件)获得的收益太少。你有“数百万”具有“相同颜色”的图像听起来也很奇怪 - 后者是什么意思?他们真的有相同的调色板(最多256种颜色)吗?如果要“强制使用一个共同的调色板”,你必须牺牲质量,将它们存储在JPEG中效率会更高。
此外,如果剥离调色板可以获得15%的增益,则图像必须非常小。在这种情况下,一种更实用的方法(特别是如果文件具有相同的大小,以像素为单位)将在一个PNG图像中存储它们的组,类似于CSS sprites。