假設各位不懂壓縮,所以我得在此先問問各位:壓縮是什麼?大致上怎麼定義壓縮?

如果你打算從美國進口「蘋果汁」這種東西,你大概不會原封不動的直接運送它──一般的作法是把蘋果汁裡面屬於「純水」的部份蒸發掉,運送到目的地之後再把水加回。再看看速食麵裡面的脫水蔬菜包,裡面的脫水蔬菜也都是類似的概念,這也許都可以算作是實體世界的壓縮方式,但這些概念對你的電腦檔案壓縮大概沒什麼幫助就是。

電腦檔案的壓縮也能縮小檔案體積,但壓縮能做的事情遠比「縮小」還多更多。

「壓縮」的概念

早期,壓縮檔案主要被用於資料的傳遞。如果一個檔案有500MB的容量,若是能壓縮成一半(250MB),那傳送起來就省掉一半的時間、空間了,豈不是「非常好非常厲害」?問題是,檔案並不是脫水蔬菜或是水果乾,說壓就壓難道易如反掌?

所以就有程式設計師就發明了各種演算法則,試著「自動」且「聰明」的把檔案壓縮得更小。在此,我用一個最簡單的概念來說明壓縮的可能性是存在的。

如果資料是AAABBCC,你也許可以把資料紀錄成3A2B2C……好的,這樣省下了一個byte的資料,這是簡單的壓縮概念。

有人會說,「現代壓縮是用這樣的法則在做?」抑或是「有這種奇怪形式的資料嗎?」呵呵,我可以跟各位保證──絕對不是且絕對沒有,現代壓縮技術只是從這單純的概念發想,但如今的技術已經比這簡單的概念複雜2000倍了。如今的壓縮技術已經可以處理各種資料型態,舉凡文字檔案、音樂檔案、影像檔案……都有對應的壓縮方法,可以把原先檔案的大小縮小成80%、50%、30%甚至是10%。也就是說──是的,把一個500MB大小的檔案,壓縮成250MB其實是可能的。

常見的壓縮技術說明

一般而言,可以簡單的把壓縮技術分為「破壞性」和「無損」兩種。破壞性壓縮通常用來對付影音檔案,無損壓縮則可以用來對付文字資料。無論是哪一種技術,其實這些技術早就「深植」於我們四周了。

破壞性壓縮格式:常用來對付影音檔案

常見於歌曲所用的MP3格式,圖片所用的JPEG格式,或是影片所用的MPEG2、MPEG4格式,都是破壞性壓縮格式。這類檔案的「原始未壓縮容量」鐵定都相當龐大,因此在傳遞/儲存之前都早就已經被壓縮過了。這類檔案到你手上之時,你只要用適當的軟體或硬體予以解碼,就可以看到/聽到檔案裡面的內容了。

至於「破壞性」這個字眼,則是因為這類壓縮技術必須判斷「哪些資料『幾乎不會被人眼/人耳看出差異』而予以捨棄」,所以可以大幅提高壓縮率,因此用來對付影音資料的壓縮技術,大多都是破壞性的(因為原始檔裡面某些「無關緊要」的資料有被捨棄)。這類技術大多不需要你親自對檔案做特殊的處理,因此日後提到「壓縮」字眼時,通常僅是在說明等一下提到的無損壓縮技術。雖然……是的,其實現在也有大量的軟體可以自己做影音相關的壓縮(音樂CD壓成MP3,或是DVD MPEG2壓縮成H.264 MPGE4……),但那等待日後有機會吧。

無損壓縮格式:用來對付各式檔案

在電腦上常見的壓縮檔案,目前最常見的有.RAR和.ZIP兩種格式,偶而會見到.7z格式。這類壓縮檔案都是無損格式,也是一般使用者應該學習使用的重要壓縮格式。

所謂的「無損」是何意思?

前述的破壞性壓縮格式,可以經由程式判斷哪些是不必要的檔案資訊而予以捨棄(並因此大幅提高壓縮率),但是文件檔案總不能判斷「哪些資料是不必要」的吧!因此,無損壓縮著重的是壓縮率和還原力。壓縮,當然是能壓越小越好,但壓縮後能否「還原」成和原來檔案一模一樣的結果,其重要性比壓縮率還重要多了。

所以,我們研究的主題就集中在無損壓縮技術,試著讓各位能夠活用這些壓縮軟體。因此底下(以及日後)提及「壓縮」時,通常都是指Windows底下常見的無損壓縮技術相關的軟體。

壓縮的妙用

從以前所謂的modem(數據機)、BBS時代(80年代中期)就開始有可以壓縮檔案的軟體了,但歷史的過去就……讓它留在灰燼裡面,現代的壓縮軟體能做的事情比那時多得多。有哪些功能呢?請各位看一下並熟記之。為何要熟記?因為這些功能其實你隨時用得到,熟記了對你的工作是有幫助的:

壓縮

壓縮軟體幹什麼用?……當然是用來壓縮檔案啦!一般而言,各種類型檔案在壓縮之後,都可以有效的縮小佔用的體積──除了那些已經被壓縮過的檔案例外。

打包

假設你要傳送18個檔案給一群同事,你會「一個一個」傳給他們嗎?──可以,但這不是聰明的作法。使用壓縮軟體可以把這一堆軟體「打包」成一個單一的壓縮檔案,你可以僅傳送這單一的壓縮包給你的同事,他們收到後自行解開,就可以還原壓縮包裡面的所有檔案。

切割

如果這18個檔案打包以後,容量卻高達30MB,但你的Internet郵件信箱卻有單一信件「附加檔案容量限制」(比方說:10MB),那怎麼辦?

這就得用一般壓縮軟體都有提供,但一般人比較不會用的功能,稱為「檔案分割」。遇到這種情形,你可以在壓縮時指定壓縮檔案的切割大小,比方說,30MB你可以指定切成6個5MB的檔案,這可以讓你傳送檔案更加方便。

確保檔案內容正確

壓縮檔案時,為了確保真的是無損還原,大多數壓縮軟體都會使用必要的糾錯技術以確保檔案可以正確解壓縮。所以有經驗的使用者即使在傳送單一,體積不大,甚至是已經壓縮過的檔案,還是會使用壓縮軟體再壓縮一次,這就是為了儘可能確保檔案在傳送之後還是正確的。

備份硬碟

善用壓縮軟體的功能,可以讓它幫你作定期的硬碟備份。不過這並非壓縮軟體的主要專業,因此備份部份的能力當然會有些侷限。但對於檔案量小的使用者而言,用壓縮軟體備份檔案也是個不錯的主意就是。

資料加密

壓縮時,使用者可以指定所謂的「密碼」,讓其他收到壓縮包的使用者必須輸入指定密碼才得以解開壓縮包內容,這會有一定的檔案保密效果。事實上,以前一些知名的壓縮軟體甚至被美國禁止輸出到一些其他「不友好」的國家。不過,現在Internet時代檔案交流如此頻繁,還有沒有這種事情就不得而知了。

軟體安裝包

如果你是個程式設計師,想要把寫好的軟體傳送給使用者安裝,你可以用壓縮軟體將所有檔案打包並指定安裝路徑,再把檔案傳送給使用者。使用者在進行軟體安裝時,其過程其實就是某種程度(較為複雜的)解壓縮程序。事上,大多壓縮軟體都有提供這類的軟體安裝包製作功能。

壓縮格式簡介

等你瞭解到原來壓縮軟體還有這麼多「能力」之後,大概也對想趕快活用這些功能吧!不過由於壓縮格式非常非常的多,因此許多人其實是不太瞭解如何操作壓縮軟體。沒關係,操作壓縮軟體前,各位可以先知道一下有哪些知名的壓縮格式,這對操作過程的瞭解是有些幫助的:

ZIP格式

從古代(80年代中期)一直存活到現在的壓縮檔案格式,其實目前已經不是最有效率的格式了,但因為十分流行且古老,在Windows XP時代甚至被內建在系統中的壓縮檔案格式,因此我個人傳送檔案時,反而大多也只選這個格式。

RAR格式

RAR格式主要由一套知名的壓縮軟體──WinRAR所提供,由於這格式提供很多ZIP格式早期不支援的功能(像是:檔案分割),因此曾經是很多下載網站的主要壓縮格式。也許你不一定該愛用這格式,但這檔案格式的重要程度恐怕不亞於ZIP,因此各位還是得知道才行。

7z格式

由於ZIP、RAR格式都是「專屬」格式,是某些公司的專利,因此就有「有識之士」開發了一套免費的壓縮軟體,Open Source提供的7-zip可說是非常優秀的代表作。免費,相容性高,更重要的是效率還相當不錯。如果想學習壓縮軟體,那從這套軟體入手將會是個不錯的選擇。這套軟體不僅支援ZIP、RAR檔案格式的解壓縮,也支援ZIP格式與自己研發的.7z格式。由於該軟體是免費軟體,因此7z格式也是某些下載網站的愛用格式,但流行程度不若ZIP、RAR就是。

本期結論:壓縮格式的版本問題

礙於篇幅,壓縮軟體的種類,以及壓縮軟體的操作技術,筆者將在下期再進行說明。在本文的最後,僅說說一個有趣的,關於解壓縮的「狀況」。
有時候,你就是無法把一個「看似正常的檔案」解壓縮,何故?

原來,上面介紹的各種壓縮格式,其實是經過了很長時間的演化,所以事實上還有「版本」的分別。同樣是ZIP、RAR,其實有的檔案是「新版」,但是從外表看是看不出來的──這是最糟糕的狀況。但是,情況就是如此,這也不是用「說」的就能解決的問題。

碰到這種狀況該怎麼辦?我個人的作法是:如果你有在用壓縮軟體,那得請你盡量使用最新版,這可以解決很多問題。因為,所有的最新版壓縮軟體大多可以維持舊檔案的相容性。至於另一個更古怪的問題則是「各種壓縮軟體的交叉相容怪狀況」,這個問題……就留待實際操作時再跟各位詳細說明吧!

 

這是Windows 7內建的ZIP壓縮資料夾功能,但一般人並不知道原來Windows早已內建壓縮/解壓縮檔案的能力。

 

7-zip是一套開源(Open Source)的免費軟體,支援格式多(主要是解壓縮),且效率頗高,是一套入門者必學的好用軟體。

熱門新聞

Advertisement