【发布时间】:2011-09-29 08:07:23
【问题描述】:
我正在尝试开发一个移动应用程序,我想知道将图像转换为文本文件的最简单方法,然后能够稍后在内存中重新创建它说文本。有问题的图像将包含不超过 16 种颜色,因此可以正常工作。
基本上,暴力破解此解决方案需要我将每个人的像素颜色数据保存到文件中。但是,这将导致一个巨大的文件。 我知道有更好的方法 - 例如,如果图像的很大一部分由相同的颜色组成,则将该区域分成更小的正方形和矩形,并将它们的坐标和大小保存到文件中。
这是一个例子。图像应该只是黑/白。大颜色框代表输出文本文件中的理论“数据点”。这些盒子会真正说明它们的来源、大小以及它们应该是什么颜色。
例如,顶盒的原点为 0,0,大小为 359,48,它代表黑色。 保存在文本文件中,数据为 0,0,359,48,0。
这是一种什么样的算法?
注意:我使用的 SDK 无法从 X、Y 坐标返回像素的颜色。但是,我可以将外部信息从文本文件加载到程序中并以这种方式进行操作。我需要导出到文本文件的这些数据将来自不同的实用程序,该实用程序能够从 X、Y 坐标获取像素的颜色。
编辑:添加图片 EDIT2:添加了约束
【问题讨论】:
-
PNG 还是 GIF?您不需要重新发明图像压缩:)
-
您能否详细说明为什么要将图像(或其部分)保存为纯文本?你不能使用二进制表示吗?此外,如果图像通常具有大量相同颜色的像素的连续运行,您可能需要使用所谓的运行长度编码 (RLE)。或者,可以使用 Lempel-Ziv 压缩算法之一(LZ77、LZ78、LZW)。
-
问题不在于图像本身,而是我使用的 SDK。我无法从 SDK 中的图像本身获得某个像素的颜色。因此,我需要想出一个解决方案,将所述数据转换为我可以加载到应用程序中并进行操作的文本文件。
-
这些是您必须在问题中解释的限制。由于图像是用来显示它们的,因此获取某个像素的颜色是一个非常基本的操作,每个人都会认为你可以做到。此外,“将所述数据转换为文本文件”是相同的,但同时适用于所有像素。看起来您正在尝试解决一个您不应该遇到的问题。
-
@Alex,您应该发布您的评论作为答案,因为我为我的问题开发了一个简单的 RLE - 它运行良好并且完美地解决了它!谢谢。
标签: algorithm image colors compression theory