2010-07-26 54 views
2

我正在使用大量图形文件的项目。我们有大约500个60x60 PNG文件组成几个不同的动画(大约80个),占用大约2MB的空间。在代码中,我只是逐一绘制每个帧以呈现动画。举例来说,其中一个动画由3个帧组成,每个帧大小约为4 KB。我的问题是,我们能否做些什么来减小这些图像的大小。结合动画帧来节省空间

我们非常依赖图像的透明度,所以转换成JPG是不可能的。转换为GIF是一种选择,但渲染图像的质量太低,所以我认为我们不能使用它。

PNGCrush为我们节省了大约20 KB的所有图像,所以没有太大的帮助。

在动画的每个帧之间,数据中没有太多变化。

回答

0

您可以将所有图像转换为JPG,并为每个图像创建另一个B图像,作为alpha通道,也可以是JPG(这应该是非常可压缩的),只需自己管理透明度即可。

您也可以将所有图像转换为一个大字节数组,并且在数组上应用LZ变体(LZO/ZLIB应该可以很好地工作),这应该可以节省至少15%。

0

您可以使用JPEG2000来存储图像。它具有非常好的压缩效果,并且像PNG一样支持alpha(它同时具有有损和无损模式),但它使用需要浮点处理器的wavelets(以防出现问题)。

另一种可能性是:

  • 转换为JPEG所述第一图像和所述α信道为B/W JPEG。
  • 计算从第一个图像到第二个图像的增量(差异)。
  • 压缩增量(再次为JPEG)。
  • 如果它的质量很高,则会降低质量。