任何數(shù)據(jù)都可壓縮成1‰
不管你信不信,我己經(jīng)實現(xiàn)了將任何數(shù)據(jù)壓縮重千分之一,我壓縮的依據(jù)就是數(shù)據(jù)中含有大量的重復字符,將這些重復字符信息用占用空間較少的符號或代碼來代替的過程。
壓縮的原理
每個文件都由各種不同代碼組成,比如01代碼。這類文件只有數(shù)字0與1組合。壓縮原理就是“通過查找其中的規(guī)律,簡化數(shù)字的排列”。比如00000110001111111111簡化成5個0,2個1,3個0,10個1的排列。在極限壓縮方式下可以將28.1G壓到25.8M。
用WinRAR壓縮后可以看出,多媒體文件壓縮比最低,與原文件相差無幾,而文本文件和程序文件壓縮比要高一些,最高達到3:1,從實際經(jīng)驗來看,平時常見的文件壓縮比都在10倍以下。
算法原理
字典算法:字典算法是最為簡單的壓縮算法之一。它是把文本中出現(xiàn)頻率比較多的單詞或詞匯組合做成一個對應的字典列表,并用特殊代碼來表示這個單詞或詞匯的這樣一種算法。
還有一種壓縮編碼是一種變長的編碼,根據(jù)文本不同的具體情況會有不同的壓縮編碼變體與之相適應,產(chǎn)生更大的壓縮比率。如變體1:重復次數(shù)+字符,文本字符串:AAABBBCCCCDDDD,編碼后得到:3A3B4C4D。變體2:特殊字符+重復次數(shù)+字符,文本字符串:AAAAABCCCCBCCC,編碼后得到:BB5ABB4CBB3C。編碼串的最開始說明特殊字符B,以后B后面跟著的數(shù)字就表示出重復的次數(shù)。
那么如何實現(xiàn)快速高密度壓縮呢?解決方案是查找每個符號的通用程度,我們建立一個未壓縮數(shù)據(jù)的柱狀圖;通過拆分柱狀圖為兩部分來創(chuàng)建一個二叉樹,每個遞歸的一半應該和另一半具有同樣的權符號數(shù)。編碼器使用這種邏輯來找到每個符號最優(yōu)的表示方法。然而解碼器使用唯一的標識在壓縮流中每個編碼的開始和結(jié)束,其通過在讀壓縮數(shù)據(jù)位的時候自頂向底進行無限傳送,選擇基于數(shù)據(jù)流中的每個獨立的分支,一旦一個到子節(jié)點,解碼器就知道一個完整的編碼已經(jīng)讀出來了,這樣完成了體積極小的壓縮過程。
如何實現(xiàn)高壓縮
系統(tǒng)文件如游戲跟一些代碼的文檔能用7Z進行壓縮。當然,壓縮率也意味著費時間的壓縮跟解壓。壓縮率小的沒必要用7z,直接打包反而更好。
影音圖像文件多數(shù)壓縮率只能通過再編碼有損壓縮。比如BMP圖像轉(zhuǎn)jpg,APE轉(zhuǎn)MP3。
大家用的WinRar是外國軟件,但中國的壓縮技術也很厲害,2013年末的時候,新聞聯(lián)播播出:我國突破壓縮技術,可將文件在rar的基礎上,圖片可再壓縮100倍,視頻可再壓縮10倍。
隨著視頻圖像、文檔映象、多媒體等技術的出現(xiàn),壓縮技術成了網(wǎng)絡管理員的一個重要工作內(nèi)容。數(shù)據(jù)壓縮技術是擠壓數(shù)據(jù),使其占用較少的磁盤存儲空間和用時更短的傳輸壓縮時間,廣大用戶還是沒有體驗到3年前的壓縮技術,壓縮技術的推廣對未來科技的發(fā)展也是必不可少的。