2014-12-04 175 views
0

假设我有一个2×2像素的16位灰度图像,它是完全随机的。 信息内容为2 x 2 x 2字节= 8字节。压缩的图像格式

接下来,我在我现在形成边界的2 x 2个初始像素之间双向插值8 x 8时间像素。对于每个像素,我从彩虹色图中查找一个3字节的RGB值。 如果我要存储未压缩的图像,现在需要10 x 10 x 3字节= 300字节。

但是信息量并没有增加太多。 一个超级智能压缩算法应该能够看看我的100像素,并推断我做了什么,并存储最初的2 x 2灰度像素+彩色图。

我应该使用哪种压缩的现有图像格式来存储这样的图像?

+0

我觉得你的描述很难理解。你基本上是通过创建4个随机的灰色角落,然后有中间的东西来制作一个10像素×10像素的网格(我认为)?当你在无处不在中引入彩虹和3字节RGB颜色时,你失去了我。如何向我们展示这样一个灰色角落和一个中间色彩的图像? – 2014-12-04 22:15:56

回答

1

取决于您是否需要图像有损或无损。我会假设你想要无损。这取决于你对图像做什么以及你如何生成图像。简短的答案是16位PNG不透明是最好的通用格式。如果您使用有损图像,JPEG通常会更好,但这取决于图像的连续色调程度,如照片。 Google WebP是一种令人惊叹的格式,它经常吹走另一种格式,但目前还没有很好的支持。

例如,如果您使用图像作为游戏的纹理,则您需要pvr纹理的游戏工具包。在iOS中使用PNG文件,但使用不同的字节顺序,所以默认情况下PNG文件是重新编码的,所以如果您要生成自己的PNG文件,则可以关闭再压缩,如果确保以正确的字节顺序编写。

并非所有的PNG编码器都是相同的。有些人比其他人更聪明。所以这取决于你有多少关心保存大小。 Photoshop很方便,但在创建小型PNG文件方面做得不错。有很多开源工具可以做得更好。我根据情况选择。通常取决于GUI和批处理选项的好坏。当我在代码中压缩时,这取决于我正在使用的环境。如果我在.NET中,我会查看关于如何篡改内置图像类的特殊图像工具包和有关StackOverflow的信息的成本。