2011-09-29 60 views
0

我試圖開發移動應用程序,我想知道最簡單的方法將圖像轉換成文本文件,然後可以在稍後重新創建它在記憶說文字。問題中的圖像將包含不超過16個左右的顏色,因此它可以很好地工作。圖像壓縮算法 - 打破圖像到廣場按顏色

基本上,暴力破解這個解決方案需要我每一個人的像素顏色數據保存到文件中。但是,這會導致一個巨大的文件。 我知道有一種更好的方式 - 就像,如果有一個由相同的顏色,打破了區域成更小的正方形和長方形和保存它們的座標和大小以文件的圖像的很大一部分。

下面是一個例子。圖像應該只是黑色/白色。大顏色框代表輸出文本文件中的理論'數據點'。這些盒子真的會說明它們的來源,大小以及它們應該是什麼顏色。

例如,機頂盒有0,0原點,大小爲359,48,以及它所代表的黑色。 保存在文本文件中的數據將是0,0,359,48,0。

sample algorithm output

什麼樣的算法會變成這樣?

注:我使用不能從X返回一個像素的顏色的SDK,Y座標。不過,我可以從文本文件中將外部信息加載到程序中並以此方式進行操作。我需要導出到文本文件的這些數據將來自不同的實用程序,它們可以從X,Y座標獲取像素的顏色。

編輯:添加圖片 EDIT2:添加約束

+4

PNG或GIF?您不需要重新創建圖像壓縮:) –

+2

您能否詳細說明爲什麼要將圖像(或其部分)保存爲純文本?你不能使用二進制表示嗎?此外,如果圖像通常有許多連續的相同顏色的像素運行,則可能需要使用所謂的運行長度編碼(RLE)。或者,可以使用Lempel-Ziv-something壓縮算法之一(LZ77,LZ78,LZW)。 –

+0

問題不在於圖像本身 - 它是我正在使用的SDK。我無法從SDK中的圖像本身獲取某個像素的顏色。因此,我需要想出一個解決方案,將所述數據轉換爲一個文本文件,我可以加載到應用程序中並進行操作。 –

回答

1

你能解釋一下你爲什麼要保存的圖像(或其部分)爲純文本?你不能使用二進制表示嗎?此外,如果圖像通常有許多連續的相同顏色的像素運行,則可能需要使用所謂的運行長度編碼(RLE)。或者,可以使用Lempel-Ziv-something壓縮算法之一(LZ77,LZ78,LZW)。

0

壓縮圖像成壓縮格式(例如JPEG,PNG,GIF等),然後將其保存爲.txt文件或任何。要重新創建圖像,只需使用適合您特定需求的任何庫函數將該文件讀入到您的程序中即可。

如果它是必要的.txt文件有一些原文的意思,那麼你可能會在一些麻煩。

0

在CS中有像空間索引的算法來recursivley細分的平面成4個瓦片。如果單元具有相同的大小,它看起來像四叉樹。如果想要將飛機細分爲(顏色)模式,可以使用此拼貼想法動態更改單元格的大小。一個好的開始是z曲線或希爾伯特曲線。