文件壓縮的原理
1. 壓縮文件是什麼原理啊
什麼是壓縮文件?
簡單的說,就是經過壓縮軟體壓縮的文件叫壓縮文件,壓縮的原理是把文件的二進制代碼壓縮,把相鄰的0,1代碼減少,比如有000000,可以把它變成6個0 的寫法60,來減少該文件的空間。
■怎麼壓縮文件?
首先要安裝壓縮軟體,現在比較流行的是WinRAR「一種高效快速的文件壓縮軟體(中文版)」。
其次是建立一個壓縮包:選擇你要製作成壓縮包的文件或文件夾,當然你也可也多選,方法同資源管理器,也就是按住Ctrl或Shift再選擇文件(文件夾)。 選取完畢之後,就可以單擊工具欄上的「壓縮」按鈕,在這里你可以選擇壓縮格式:RAR和ZIP。 如果你想得到較大的壓縮率,建議選擇RAR格式。
各個選項選擇好以後,單擊確定按鈕就開始製作壓縮包了,非常方便。
有時候大家會遇到這個問題,就是你在一個論壇里要上傳一些文件壓縮包,壓縮包大小有3M,但是論壇限制會員上傳大小隻有2M,怎麼辦呢?
其實辦法很簡單,就是在你壓縮這個文件時,分成幾個帶分卷壓縮包,分卷包大小設置為2M即可,比如:原來文件名為123.rar(3M),壓縮成分卷包後為123.part1.rar(2M)與123.part2.rar(1M)兩個文件,這樣你就可以上傳了。
具體方法如下:
1、在要壓縮的文件上點右鍵
2、添加到壓縮文件....
3、選常規
4、壓縮方式選最好
5、批定壓縮分卷大小(按位元組計算),1M = 1024K,1K = 1024位元組,填寫數字即可
當你下載了帶有分卷的壓縮包後,如何解壓文件呢?
具體方法如下:
1、把所有的壓縮分卷全部下載完整
2、所有分卷必須在同一個文件夾內
3、然後雙擊解壓第一個分卷,即可
註:分卷解壓的文件必須是連續的,若分卷未下載完整,則解壓時自然會提示需要下一壓縮分卷
2. 壓縮或解壓文件是什麼原理
壓縮文件的基本原理是查找文件內的重復位元組,並建立一個相同位元組的"詞典"文件,並用一個代碼表示,比如在文件里有幾處有一個相同的詞"中華人民共和國"用一個代碼表示並寫入"詞典"文件,這樣就可以達到縮小文件的目的.
由於計算機處理的信息是以二進制數的形式表示的,因此壓縮軟體就是把二進制信息中相同的字元串以特殊字元標記來達到壓縮的目的。為了有助於理解文件壓縮,請您在腦海里想像一幅藍天白雲的圖片。對於成千上萬單調重復的藍色像點而言,與其一個一個定義「藍、藍、藍……」長長的一串顏色,還不如告訴電腦:「從這個位置開始存儲1117個藍色像點」來得簡潔,而且還能大大節約存儲空間。這是一個非常簡單的圖像壓縮的例子。其實,所有的計算機文件歸根結底都是以「1」和「0」的形式存儲的,和藍色像點一樣,只要通過合理的數學計算公式,文件的體積都能夠被大大壓縮以達到「數據無損稠密」的效果。總的來說,壓縮可以分為有損和無損壓縮兩種。如果丟失個別的數據不會造成太大的影響,這時忽略它們是個好主意,這就是有損壓縮。有損壓縮廣泛應用於動畫、聲音和圖像文件中,典型的代表就是影碟文件格式mpeg、音樂文件格式mp3和圖像文件格式jpg。但是更多情況下壓縮數據必須准確無誤,人們便設計出了無損壓縮格式,比如常見的zip、rar等。壓縮軟體(compression software)自然就是利用壓縮原理壓縮數據的工具,壓縮後所生成的文件稱為壓縮包(archive),體積只有原來的幾分之一甚至更小。當然,壓縮包已經是另一種文件格式了,如果你想使用其中的數據,首先得用壓縮軟體把數據還原,這個過程稱作解壓縮。常見的壓縮軟體有winzip、winrar等。
有兩種形式的重復存在於計算機數據中,zip就是對這兩種重復進行了壓縮。
一種是短語形式的重復,即三個位元組以上的重復,對於這種重復,zip用兩個數字:1.重復位置距當前壓縮位置的距離;2.重復的長度,來表示這個重復,假設這兩個數字各佔一個位元組,於是數據便得到了壓縮,這很容易理解。
一個位元組有 0 - 255 共 256 種可能的取值,三個位元組有 256 * 256 * 256 共一千六百多萬種可能的情況,更長的短語取值的可能情況以指數方式增長,出現重復的概率似乎極低,實則不然,各種類型的數據都有出現重復的傾向,一篇論文中,為數不多的術語傾向於重復出現;一篇小說,人名和地名會重復出現;一張上下漸變的背景圖片,水平方向上的像素會重復出現;程序的源文件中,語法關鍵字會重復出現(我們寫程序時,多少次前後、paste?),以幾十 K 為單位的非壓縮格式的數據中,傾向於大量出現短語式的重復。經過上面提到的方式進行壓縮後,短語式重復的傾向被完全破壞,所以在壓縮的結果上進行第二次短語式壓縮一般是沒有效果的。
第二種重復為單位元組的重復,一個位元組只有256種可能的取值,所以這種重復是必然的。其中,某些位元組出現次數可能較多,另一些則較少,在統計上有分布不均勻的傾向,這是容易理解的,比如一個 ASCII 文本文件中,某些符號可能很少用到,而字母和數字則使用較多,各字母的使用頻率也是不一樣的,據說字母 e 的使用概率最高;許多圖片呈現深色調或淺色調,深色(或淺色)的像素使用較多(這里順便提一下:png 圖片格式是一種無損壓縮,其核心演算法就是 zip 演算法,它和 zip 格式的文件的主要區別在於:作為一種圖片格式,它在文件頭處存放了圖片的大小、使用的顏色數等信息);上面提到的短語式壓縮的結果也有這種傾向:重復傾向於出現在離當前壓縮位置較近的地方,重復長度傾向於比較短(20位元組以內)。這樣,就有了壓縮的可能:給 256 種位元組取值重新編碼,使出現較多的位元組使用較短的編碼,出現較少的位元組使用較長的編碼,這樣一來,變短的位元組相對於變長的位元組更多,文件的總長度就會減少,並且,位元組使用比例越不均勻,壓縮比例就越大。
3. 文件壓縮的原理
目前壓縮技術可分為通用無損數據壓縮與有損壓縮兩大類,但不管是採用何種技術模型,其本質內容都是一樣的,即都是通過某種特殊的編碼方式將數據信息中存在的重復度、冗餘度有效地降低,從而達到數據壓縮的目的。比如:「中國」是「中華人民共和國」的簡稱,但前者的字數是2,後者則是7,但我們都不會對它們倆所要表達的意思產生誤解,這是因為前者保留了信息中最「關鍵點」。同時,作為有思維能力的人類,我們可以根據前後詞彙關系和知識積累,就可推斷出其原來的全部信息。壓縮技術也一樣,在不影響文件的基本使用的前提下,只保留原數據中一些「關鍵點」,去掉了數據中的重復的、冗餘的信息,從而達到壓縮的目的。這就是文件壓縮技術所要遵循的最基本原理。
例如:一個文件的內容是11100000000...000001111(中間有一萬個零),你要完全寫出來的話,會很長很長,但如果你寫「111一萬個零1111」來描述它,也能得到同樣的信息,但卻只有十一個字,這樣就減小了文件體積。在具體應用中很少有這樣的文件存在,那些文件都相當復雜,根據一定的數學演算法,權衡把哪段位元組用一個特定的更小位元組代替,就可以實現數據最大程度的無損壓縮.
4. 為什麼要把文件壓縮
①能省空間。在早期計算機硬碟里的空間比較小時,這個作用尤為重要。
②便於管理文件,類似一個單文件的文件夾。
③保密作用。這也是我個人最重要的用途。現在隨著存儲空間的越來越大,越來越便宜,壓縮本身的作用大大降低了,加密的作用就重要得多了。即把文件用壓縮軟體打成包(用壓縮度最小的「存儲」格式),然後加上密碼。這樣的這樣,文件就算是被別人偷去了,也沒什麼可擔心的。其實壓縮軟體的加密強度是相當高的,可不是這里頭有個人的帖子里說的那樣,是個「簡單加密」。
④文件切割作用。有時候某個文件太大,需要把它分割成幾個小些的文件,便於傳輸(比如說郵箱的附件有大小限制)或是拷貝。在一些老式的計算機中,硬碟分區格時式是fat32,無法存儲超過4G的文件,這種時候也有必要把大文件分割成小的文件。這兩種時候,倒是都可以結合原本的壓縮功能
5. 數據壓縮的基本原理
數據壓縮的基本原理
--------------------------------------------------------------------------------
數據壓縮技術就是對原始數據進行數據編碼或壓縮編碼。
目前常用的壓縮編碼有:冗餘壓縮法(無損壓縮法、熵編碼)和熵壓縮法(有損壓縮法)兩類。
無損壓縮是可逆的;有損壓縮是不可逆的。
--------------------------------------------------------------------------------
變長編碼
使用長度可變的代碼來對以不同頻率出現的樣本進行編碼。
1·Huffman編碼
Huffman編碼又稱最佳編碼。
Huffman編碼過程是:
*將信源符號按概率遞減順序排列;
*把兩個最小的概率加起來,作為新符號的概率;
*重復上述兩步驟,直到概率的和達到1為止;
*在每次合並消息時,將被合並的消息賦予1和0或賦予0和1;
*尋找從每一信源符號到概率為1的路經,記錄下路經上的1和0;
*對每一符號寫出從碼樹的根到終結點1、0序列。
例:對信源
[X1,X2,X3,X4,X5,X6]=[0.25,0.25,0.20,0.15,0.10,0.05]
進行Huffman編碼。
其中:X1=01;X2=10;X3=11;X4=000;X5=0010;X6=0011。
2·算術編碼
算術編碼是一種二元編碼。
這種編碼方法是在不考慮信源統計的情況下,只要監視一小段時間內碼字出現的頻率,不管統計是平穩的或非平穩的,編碼的碼率總能趨近於信源熵值,每次迭代的編碼演算法只處理一個數據符號,並且只有算術運算。
對二進制編碼來說,信源符號只有兩個。在算術編碼的初級階段,可設一個大概率Pe和小概率Qe,然後對被編碼比特流符號進行判斷。
其步驟:
*設編碼初始化子區間為[0,1],Qe從0算起,則Pe=1-Qe。
*確定子區間起始位置:子區間起始位置=前子區間的長度+ 當前符號的區間左端X前子區間長度
*確定新子區間長度:新子區間長度=前子區間的長度X當前符號的概率
*隨著被編碼數據流符號的輸入,子區間逐漸縮小,
*最後得到的子區間長度決定了表示該區域內的某一個數所需的位數。
例:P42
--------------------------------------------------------------------------------
預測編碼
(自習)
--------------------------------------------------------------------------------
變換編碼
變換編碼是指對信號進行變換後在編碼。
例如:
典型的編碼結構是:
--------------------------------------------------------------------------------
模型編碼
模型編碼是指採用模型的方法對傳輸的圖像進行參數估測。
模型編碼有:隨機馬爾可夫場和分形圖像編碼。
1·分形的概念
分形的含義是其組成部分以某種方式與整體相似的形(一類無規則、混亂而復雜),其局部與整體有相似性的體系,即:自相似性體系。
2·分形編碼
*基本原理:分形的方法是把一幅數字圖像,通過一些圖像處理技術將原始圖像分成一些子圖像,然後在分形集中查找這樣的子圖像。分形集存儲許多迭代函數,通過迭代函數的反復迭代,可以恢復原來的子圖像。
分形編碼壓縮的步驟:
第一步:把圖像劃分為互不重疊的、任意大小的的D分區;
第二步:劃定一些可以相互重疊的、比D分區大的R分區;
第三步:為每個D分區選定仿射變換表。
分形編碼解壓步驟:
首先從文件中讀取D分區劃分方式的信息和仿射變換系數等數據;
然後劃定兩個同樣大小的緩沖區給D圖像和R圖像,並把R初始化到任一初始階段;
根據仿射變換系數把其相應的R分區做仿射變換,並用變換後的數據取代該D分區的原有數據;
對D中所有的D分區都進行上述操作,全部完成後就形成一個新的D圖像;
再把新D圖像的內容拷貝到R中,把新R當作D,D當作R,重復操作(迭代)。
。分形編碼的特點:
壓縮比高,壓縮後的文件容量與圖像像素數無關,在壓縮時時間長但解壓縮速度快。
--------------------------------------------------------------------------------
6. 什麼是文件壓縮
壓縮包是經過壓縮形成的文件,壓縮後比初始文件內存更小,可以將多個文件壓縮成一個文件,且壓縮後的文件在傳輸過程中不易被損壞。壓縮包使用最廣泛的格式有rar 、zip、7z,zip壓縮速度快,壓縮率高,rar雖然壓縮速度及壓縮率略遜於zip,但是它支持多卷壓縮文件。
壓縮包的作用
1、節約磁碟空間
2、壓縮包可以容納多個文件,在發送郵件的時候,不需要一個一個上傳文件,將其壓縮成一個壓縮包就能一次上傳即可。
3、如果文件過大,可將文件壓縮成說個小壓縮包,適用於文件拷貝。比如有個300M的文件需要拷貝到別的電腦中,而U盤只有256M,可以用壓縮軟體把文件分成兩個150M的壓縮包然後分別拷貝即可解決。
4、部分軟體可實現對初始文件的壓縮保密保障,就是在形成壓縮包的時候添加解壓密碼,這樣生成的壓縮包別人沒有密碼是無法打開的,可以起到一定的文件保密作用。
7. 壓縮文件什麼原理,謝謝
壓縮文件,簡單的說,就是經過壓縮軟體壓縮的文件叫壓縮文件,壓縮的原理是把文件的二進制代碼壓縮,把相鄰的0,1代碼減少,比如有000000,可以把它變成6個0 的寫法60,來減少該文件的空間。
視頻、圖片、音樂的壓縮形式都不一樣。重復壓縮不影響文件質量,解壓縮後文件不變
8. 軟體壓縮的原理是什麼
壓縮的原理是把文件的二進制代碼壓縮,把相鄰的0,1代碼減少,比如有000000,可以把它變成6個0 的寫法60,來減少該文件的空間。
由於計算機處理的信息是以二進制數的形式表示的,因此壓縮軟體就是把二進制信息中相同的字元串以特殊字元標記來達到壓縮的目的。
為了有助於理解文件壓縮,請在腦海里想像一幅藍天白雲的圖片。對於成千上萬單調重復的藍色像點而言,與其一個一個定義「藍、藍、藍……」長長的一串顏色,還不如告訴電腦:「從這個位置開始存儲1117個藍色像點」來得簡潔,而且還能大大節約存儲空間。
這是一個非常簡單的圖像壓縮的例子。其實,所有的計算機文件歸根結底都是以「1」和「0」的形式存儲的,和藍色像點一樣,只要通過合理的數學計算公式,文件的體積都能夠被大大壓縮以達到「數據無損稠密」的效果。
(8)文件壓縮的原理擴展閱讀
WinRAR能備份數據,減少 E-mail附件的大小,解壓縮從Internet上下載的 RAR、ZIP 和其他格式的壓縮文件,並能創建 RAR 和 ZIP 格式的壓縮文件。在購買之前,你可以下載試用版本。
WINRAR在壓縮率和速度方面都有很好的表現。其壓縮率比高,3.x 採用了更先進的壓縮演算法,是現在壓縮率較大、壓縮速度較快的格式之一。 3.3 增加了掃描壓縮文件內病毒、解壓縮「增強壓縮」 ZIP 壓縮文件的功能, 升級了分卷壓縮的功能等。
參考資料來源:網路-壓縮文件
9. 壓縮文件是什麼原理
壓縮原理需要專業人士來解釋,我只了解一點:
(1)多媒體文件(視頻文件、音頻文件、MP3等),絕大多數已是經過壓縮或高度壓縮處理過的,無法再作進一步的壓縮或者根本無法壓縮,就目前的壓縮技術來看,即使可以再進一步壓縮,必定會以犧牲視頻文件、音頻文件的畫質、音質為代價;
(2)壓縮比大的文件,多半是指那些文本文件或一些數據表格文件,這些文件中重復的數據、文字信息比較多,壓縮軟體可以通過其演算法,把重復的信息全部歸納一個信息處理,盡可能縮小文件的大小,解壓時再將重復的信息通過處理回歸原位。對於這些文本文件,你不可能為縮小大小,而事先刪除那些重復的數據或文字,如果這樣,你恐怕根本就無法使用了。所以,只要文件內部重復的數據、文字信息越多,其壓縮比就會越高
10. 壓縮的壓縮基本原理
概述
如果您從互聯網上下載了許多程序和文件,可能會遇到很多ZIP文件。這種壓縮機制是一種很方便的發明,尤其是對網路用戶,因為它可以減小文件中的比特和位元組總數,使文件能夠通過較慢的互聯網連接實現更快傳輸,此外還可以減少文件的磁碟佔用空間。在下載了文件後,計算機可使用WinZip或Stuffit這樣的程序來展開文件,將其復原到原始大小。如果一切正常,展開的文件與壓縮前的原始文件將完全相同。 乍一聽好像很神秘:您是怎樣減少比特和位元組的數量並將它們原封不動地還原回去的呢?等一切水落石出之後,您會發現這個過程背後的基本理念其實非常簡單明了。在本文中,我們將討論這種通過簡單壓縮來明顯減小文件的方法。
大多數計算機文件類型都包含相當多的冗餘內容——它們會反復列出一些相同的信息。文件壓縮程序就是要消除這種冗餘現象。與反復列出某一塊信息不同,文件壓縮程序只列出該信息一次,然後當它在原始程序中出現時再重新引用它。
舉例
以我們熟悉的信息類型——單詞——為例子。
肯尼迪(John F. Kennedy)在1961年的就職演說中曾說過下面這段著名的話:
Ask not what your country can do for you——ask what you can do for your country.(不要問國家能為你做些什麼,而應該問自己能為國家做些什麼。)
這段話有17個單詞,包含61個字母、16個空格、1個破折號和1個句點。如果每個字母、空格或標點都佔用1個內存單元,那麼文件的總大小為79個單元。為了減小文件的大小,我們需要找出冗餘的部分。
我們立刻發現:
如果忽略大小寫字母間的區別,這個句子幾乎有一半是冗餘的。九個單詞(ask、not、what、your、country、can、do、for、you)幾乎提供了組成整句話所需的所有東西。為了構造出另一半句子,我們只需要拿出前半段句子中的單詞,然後加上空格和標點就行了。
大多數壓縮程序使用基於自適應字典的LZ演算法來縮小文件。「LZ」指的是此演算法的發明者Lempel和Ziv,「字典」指的是對數據塊進行歸類的方法。
排列字典的機制有很多種,它也可以像編號列表那樣簡單。在我們檢查肯尼迪這句著名講話時,可以挑出重復的單詞,並將它們放到編號索引中。然後,我們直接寫入編號而不是寫入整個單詞。
結論
因此,如果我們的字典是:
ask
what
your
country
can
do
for
you
我們的句子就應該是這樣的:
1 not 2 3 4 5 6 7 8-- 1 2 8 5 6 7 3 4
如果您了解這種機制,那麼只需使用該字典和編號模式即可輕松重新構造出原始句子。這就是在展開某個下載文件時,計算機中的解壓縮程序所做的工作。你可能還遇到過能夠自行解壓縮的壓縮文件。若要創建這種文件,編程人員需要在被壓縮的文件中設置一個簡單的解壓縮程序。在下載完畢後,它可以自動重新構造出原始文件。
但是使用這種機制究竟能夠節省多少空間呢?「1 not 2 3 4 5 6 7 8——1 2 8 5 6 7 3 4」當然短於「Ask not what your country can do for you-- ask what you can do for your country.」,但應注意的是,我們需要隨文件一起保存這個字典。
在實際壓縮方案中,計算出各種文件需求是一個相當復雜的過程。讓我們回過頭考慮一下上面的例子。每個字元和空格都佔用1個內存單元,整個原句要佔用79個單元。壓縮後的句子(包括空格)佔用了37個單元,而字典(單詞和編號)也佔用了37個單元。也就是說,文件的大小為74個單元,因此我們並沒有把文件大小減少很多。
但這只是一個句子的情況!可以想像的是,如果用該壓縮程序處理完肯尼迪講話的其餘部分,我們會發現這些單詞以及其他單詞重復了更多次。而且,正如下一節所言,為了得到盡可能高的組織效率,可以對字典進行重寫。
在上一個的例子中,我們挑出了所有重復的單詞並將它們放在一個字典中。對於我們來說,這是最顯而易見的字典編寫方法。但是壓縮程序卻不這樣認為:它對單詞沒有概念——它只會尋找各個模式。為了盡可能減小文件的大小,它會仔細挑選出最優模式。
如果從這個角度處理該句子,我們最終會得到一個完全不同的字典。
如果壓縮程序掃描肯尼迪的這句話,它遇到的第一個冗餘部分只有幾個字母長。在ask not what your中,出現了一個重復的模式,即字母t後面跟一個空格——在not和what中。如果壓縮程序將此模式寫入字典,則每次出現「t」後面跟一個空格的情況時,它會寫入一個「1」。但是在這個短句中,此模式的出現次數不夠多,不足以將其保留為字典中的一個條目,因此程序最終會覆蓋它。
程序接下來注意到的內容是ou,在your和country中都出現了它。如果這是一篇較長的文檔,將此模式寫入字典會節省大量空間——在英語中ou是一個十分常見的字母組合。但是在壓縮程序看完整個句子後,它立即發現了一個更好的字典條目選擇:不僅ou發生了重復,而且your和country整個單詞都發生了重復,並且它們實際上是作為一個短語your country一起發生重復的。在本例中,程序會用your country條目覆蓋掉字典中的ou條目。
短語can do for也發生了重復,一次後面跟著your,另一次跟著you,因此我們又發現can do for you也是一種重復模式。這樣,我們可以用一個數字來代替15個字元(包含空格),而your country只允許我們用一個數字代替13個字元(包含空格),所以程序會用r country條目覆蓋your country條目,然後再寫入一個單獨的can do for you條目。程序通過這種方式繼續工作,挑出所有重復的信息,然後計算應該將哪一種模式寫入字典。基於自適應字典的LZ演算法中的「自適應」部分指的就是這種重寫字典的能力。程序執行此工作的過程實際上非常復雜。
無論使用什麼方法,這種深入搜索機制都能比僅僅挑出單詞這種方法更有效率地對文件進行壓縮。如果使用我們上面提取出的模式,然後用「__」代替空格,最終將得到下面這個更大的字典:
ask__
what__­
you
r__country
__can__do__for__you
而句子則較短:
「1not__2345__--__12354」
句子佔用18個內存單元,字典佔用41個單元。所以,我們將文件總大小從79個單元壓縮到了59個單元!這僅僅是壓縮句子的一種方法,而且不一定是最高效的方法。(看看您能找到更好的方法嗎!)