手机上的应用程序大小需要尽可能小。如果我有一张剑的图像,然后是一张非常相似的剑的图像,除了我改变了颜色或添加了火焰或改变了宝石的图片或其他什么,如何尽可能有效地存储?
一种可能性是以图形方式存储差异。我只存储图像差异,然后在运行时合并这两个图像。我已经在图形设计stackexchange网站上询问了如何做到这一点的问题。
另一种可能性是,apk已经做到了这一点,或者已经有人用来在android中存储类似图像的文件格式或方法。
有什么建议吗?是否有工具可用于获取两个png并生成差异文件或文件格式以存储类似图像或其他内容?
答案 0 :(得分:0)
我会在更高的层次上解决这个问题。例如,在运行时进行颜色更改(可能存储具有非常特定颜色的图像,如某些丑陋的绿色阴影,您知道在运行时使用白色或红色或蓝色或任何实际颜色固定的颜色你要)。然后,您可以在加载时生成多个图像缓冲区。
对于合成这两个图像,只需单独存储“宝石”图像,然后将其绘制在基本剑上。同样,您可以在加载时创建新图像,或者只是在运行时进行透支。
这有助于减少应用程序在闪存上的占用空间,但在应用程序处于活动状态时不会减少内存占用。
答案 1 :(得分:0)
我相信你想要在2张图像之间存储增量非常好。
然后,您可以使用简单的熵编码器(例如Huffman)压缩生成的增量文件,如果与基本图像的相似性很重要,则很可能实现强压缩比。
如果相似性非常强,您甚至可以尝试使用Range Coder,以实现每像素不到一位的性能。然而,对于较大的图像(即比12x12精灵更高的清晰度),差异可能是显而易见的。
然而,这些想法将要求您或某人为您编写此类函数的代码。这应该非常简单。
答案 2 :(得分:0)
这样做的一个非常简单的方法是使用ImagePack(一个包含许多图像的图像) - 这样您就可以轻松利用PNG或JPG压缩算法。然后在绘制之前分割图像。