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