壓縮檔案

壓縮檔案

簡單的說,就是經過壓縮軟體壓縮的檔案叫壓縮檔案,壓縮的原理是把檔案的二進位代碼壓縮,把相鄰的0,1代碼減少,比如有000000,可以把它變成6個0 的寫法60,來減少該檔案的空間。

壓縮檔案的基本原理是查找檔案內的重復位元組,並建立一個相同位元組的"詞典"檔案,並用一個代碼表示,比如在檔案裏有幾處有一個相同的詞"中華人民共和國"用一個代碼表示並寫入"詞典"檔案,這樣就可以達到縮小檔案的目的。

  • 中文名稱
    壓縮檔案
  • 概念
    經過壓縮軟體壓縮的檔案
  • 原理
    檔案的二進位代碼壓縮
  • 流行軟體
    WinRAR
  • 格式
    RAR 和 ZIP 格式
  • 特點
    壓縮率較大、壓縮速度較快

壓縮原理

把檔案的二進位代碼壓縮,把相鄰的0,1代碼減少,比如有000000,可以把它變成6個0 的寫法60,來減少該檔案的空間。

由于電腦處理的信息是以二進位數的形式表示的,因此壓縮軟體就是把二進位信息中相同的字元串以特殊字元標記來達到壓縮的目的。為了有助于理解檔案壓縮,請在腦海裏想象一幅藍天白雲的圖片。對于成千上萬單調重復的藍色像點而言,與其一個一個定義"藍、藍、藍……"長長的一串顏色,還不如告訴電腦:"從這個位置開始存儲1117個藍色像點"來得簡潔,而且還能大大節約存儲空間。這是一個非常簡單的圖像壓縮的例子。其實,所有的電腦檔案歸根結底都是以"1"和"0"的形式存儲的,和藍色像點一樣,隻要通過合理的數學計算公式,檔案的體積都能夠被大大壓縮以達到"資料無損稠密"的效果。總的來說,壓縮可以分為有損和無損壓縮兩種。如果丟失個別的資料不會造成太大的影響,這時忽略它們是個好主意,這就是有損壓縮。有損壓縮廣泛套用于動畫、聲音和圖像檔案中,典型的代表就是影碟檔案格式mpeg、音樂檔案格式mp3和圖像檔案格式jpg。但是更多情況下壓縮資料必須準確無誤,人們便設計出了無損壓縮格式,比如常見的zip、rar等。壓縮軟體(compression software)自然就是利用壓縮原理壓縮資料的工具,壓縮後所生成的檔案稱為壓縮檔(archive),體積隻有原來的幾分之一甚至更小。當然,壓縮檔已經是另一種檔案格式了,如果想使用其中的資料,首先得用壓縮軟體把資料還原,這個過程稱作解壓縮。常見的壓縮軟體有winzip、winrar等。

有兩種形式的重復存在于電腦資料中,zip就是對這兩種重復進行了壓縮。

一種是短語形式的重復,即三個位元組以上的重復,對于這種重復,zip用兩個數位:1.重復位置距當前壓縮位置的距離;2.重復的長度,來表示這個重復,假設這兩個數位各佔一個位元組,于是資料便得到了壓縮,這很容易理解。

一個位元組有 0 - 255 共 256 種可能的取值,三個位元組有 256 * 256 * 256 共一千六百多萬種可能的情況,更長的短語取值的可能情況以指數方式成長,出現重復的概率似乎極低,實則不然,各種類型的資料都有出現重復的傾向,一篇論文中,為數不多的術語傾向于重復出現;一篇小說,人名和地名會重復出現;一張上下漸變的背景圖片,水準方向上的像素會重復出現;程式的源檔案中,文法關鍵字會重復出現(我們寫程式時,多少次前後copy、paste?),以幾十 K 為單位的非壓縮格式的資料中,傾向于大量出現短語式的重復。經過上面提到的方式進行壓縮後,短語式重復的傾向被完全破壞,所以在壓縮的結果上進行第二次短語式壓縮一般是沒有效果的。

第二種重復為單位元組的重復,一個位元組隻有256種可能的取值,所以這種重復是必然的。其中,某些位元組出現次數可能較多,另一些則較少,在統計上有分布不均勻的傾向,這是容易理解的,比如一個 ASCII 文本檔案中,某些符號可能很少用到,而字母和數位則使用較多,各字母的使用頻率也是不一樣的,據說字母 e 的使用概率最高;許多圖片呈現深色調或淺色調,深色(或淺色)的像素使用較多(這裏順便提一下:png 圖片格式是一種無損壓縮,其核心演算法就是 zip 演算法,它和 zip 格式的檔案的主要區別在于:作為一種圖片格式,它在檔案頭處存放了圖片的大小、使用的顏色數等信息);上面提到的短語式壓縮的結果也有這種傾向:重復傾向于出現在離當前壓縮位置較近的地方,重復長度傾向于比較短(20位元組以內)。這樣,就有了壓縮的可能:給 256 種位元組取值重新編碼,使出現較多的位元組使用較短的編碼,出現較少的位元組使用較長的編碼,這樣一來,變短的位元組相對于變長的位元組更多,檔案的總長度就會減少,並且,位元組使用比例越不均勻,壓縮比例就越大。

壓縮方法

安裝壓縮軟體

首先要安裝壓縮軟體,現在比較流行的是WinRAR「一種高效快速的檔案壓縮軟體(中文版)」。

WinRAR壓縮檔案WinRAR壓縮檔案

在要壓縮的檔案上點右鍵

其次是建立一個壓縮檔:選擇你要製作成壓縮檔的檔案或資料夾,當然你也可以多選,方法同資源管理器,也就是按住Ctrl或Shift再選擇檔案(資料夾)。

增加到壓縮檔案,選常規

選取完畢之後,就可以單擊工具列上的"壓縮"按鈕,在這裏你可以選擇壓縮格式:RAR和ZIP。 如果你想得到較大的壓縮率,建議選擇RAR格式。

各個選項選擇好以後,單擊確定按鈕就開始製作壓縮檔了,非常方便。

批定壓縮卷宗大小

( 按位元組計算),1M = 1024K,1K = 1024位元組,填寫數位即可。

壓縮檔案

有時候大家會遇到這個問題,就是你在一個論壇裏要上載一些檔案壓縮包,壓縮檔大小有3M,但是論壇限製會員上載大小隻有2M,怎麽辦呢?

其實辦法很簡單,就是在你壓縮這個檔案時,分成幾個帶卷宗壓縮包,卷宗包大小設定為2M即可,比如:原來檔案名稱為123.rar(3M),壓縮成卷宗包後為123.part1.rar(2M)與123.part2.rar(1M)兩個檔案,這樣你就可以上載了。

解壓縮方法

當你下載了帶有卷宗的壓縮檔後,如何解壓檔案呢?具體方法如下:

Zip壓縮檔案Zip壓縮檔案

1、把所有的壓縮卷宗全部下載完整

2、所有卷宗必須在同一個資料夾內

3、然後雙擊解壓任意一個卷宗,即可

註:卷宗解壓的檔案必須是連續的

若卷宗未下載完整,則解壓時自然會提示需要下一壓縮卷宗

軟體介紹

WinRAR

WinRAR,流行好用的 Windows 壓縮工具!

WinRAR 是一個強大的壓縮檔案管理工具。它能備份你的資料,減少你的 E-mail附屬檔案的大小,解壓縮從Internet上下載的 RAR、ZIP 和其他格式的壓縮檔案,並能建立 RAR 和 ZIP 格式的壓縮檔案。在購買之前,你可以下載試用版本。

WINRAR 是目前流行的壓縮工具,介面友好,使用方便,在壓縮率和速度方面都有很好的表現。其壓縮率比高,3.x 採用了更先進的壓縮演算法,是現在壓縮率較大、壓縮速度較快的格式之一。 3.3 增加了掃描壓縮檔案內病毒、解壓縮"增強壓縮" ZIP 壓縮檔案的功能, 升級了卷宗壓縮的功能等。

主要特點

1、 對 RAR 和 ZIP 的完全支持;

2、 支持 ARJ、CAB、LZH、ACE、TAR、GZ、UUE、BZ2、JAR、ISO 類型檔案的解壓;

3、 多卷壓縮功能;

4、 建立自解壓檔案,可以製作簡單的安裝程式,使用方便;

5、 壓縮檔案大小可以達到 8,589,934 TB;

6、 鎖定和強大的資料恢復記錄功能,對資料的保護無微不至,新增的恢復卷的使用功能更強大

運行原理

有損壓縮和無損壓縮。

無損壓縮

如果您從網際網路上下載了許多程式和檔案,可能會遇到很多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個單元!這僅僅是壓縮句子的一種方法,而且不一定是最高效的方法。(您能找到更好的方法嗎?)

檔案壓縮率取決于多種因素,包括檔案類型、檔案大小和壓縮方案。

在世界上的大多數語言中,某些字母和單詞經常以相同的模式一起出現。正是由于這種高冗餘性,而導致文本檔案的壓縮率會很高。通常大小合適的文本檔案的壓縮率可以達到50%或更高。大多數程式語言的冗餘度也很高,因為它們的命令相對較少,並且命令經常採用一種設定的模式。對于包含大量不重復信息的檔案(例如圖像或MP3檔案),則不能使用這種機製來獲得很高的壓縮率,因為它們不包含重復多次的模式

如果檔案有大量重復模式,那麽壓縮率通常會隨著檔案大小的增加而增加。從我們的例子中就可以看出這一點--如果我們摘錄的肯尼迪講話再長一些,您會發現又多次出現了我們字典中的模式,因此能夠通過每個字典條目節省更多的檔案空間。此外,對于更大的檔案,還可能出現具有更大普遍性的模式,從而能夠建立出效率更高的字典。

此外,檔案壓縮效率還取決于壓縮程式使用的具體演算法。有些程式能夠在某些類型的檔案中更好地尋找到模式,因此能更有效地壓縮這些類型的檔案。其他一些壓縮程式在字典中又使用了字典,這使它們在壓縮大檔案時表現很好,但是在壓縮較小的檔案時效率不高。盡管這一類的所有壓縮程式都基于同一個基本理念,但是它們的執行方式卻各不相同。程式開發人員始終在嘗試建立更好的壓縮機製。

有損壓縮

我們在上文中討論的壓縮類型稱為無損壓縮,因為您重新建立的檔案與原始檔案完全相同。所有無損壓縮都基于這樣一種理念:將檔案變為"較小"的形式以利于傳輸或存儲,並在另一方收到它後復原以便重新使用它。

有損壓縮則與此大不相同。這些程式直接去除"不必要"的信息,對檔案進行剪裁以使它變得更小。這種類型的壓縮大量套用于減小點陣圖圖像的檔案大小,因為點陣圖圖像的體積通常非常龐大。為了了解有損壓縮的工作原理,讓我們看看你的電腦如何對一張掃描的照片進行壓縮。

對于此類檔案,無損壓縮程式的壓縮率通常不高。盡管圖片的大部分看起來都是相同的--例如,整個天空都是藍色的--但是大部分像素之間都存在微小的差異。為了使圖片變得更小同時不降低其解析度,您必須變更某些像素的顏色值。如果圖片中包含大量的藍色天空,程式會挑選一種能夠用于所有像素的藍色。然後,程式重寫該檔案,所有天空像素的值都使用此信息。如果壓縮方案選擇得當,您不會註意到任何變化,但是檔案大小會顯著減小。

當然,對于有損壓縮,在檔案壓縮後您無法將其復原成原始檔案的樣子。您必須接受壓縮程式對原始檔案的重新解釋。因此,如果需要完全重現原來的內容(例如軟體應用程式、資料庫和總統就職演說),則不應該使用這種壓縮形式。

相關詞條

其它詞條