出於對於photoshop的愛好和學習,前兩天去租了壹碟世界百科大圖庫,結果裝入電腦中後顯示D盤僅余4GB的空間了,對於像我這樣喜歡存資料的人來說實在是太少了,而且我發現大圖庫中的圖片動則是1.5M左右,這與我平時在網上收藏的圖片大小有很大的區別,我存的圖片壹般都是100KB右右,除非是用數碼相機照的才有0.5M左右,而且從表現上來看還沒有100KB的圖片清晰,於是想辦法把百科圖庫給壓縮壹下,今天的文章就是簡單地介紹圖片壓縮的原理和簡單的方法。
首先我來介紹電腦上圖片的兩種表現技術,
圖片的表示技術就兩種,位圖技術和矢量圖技術。矢量圖主要用於電腦創作的卡通圖及數學上的規則圖形等,而通常我們生活中接觸較多的,如數碼照片,掃描進電腦的圖片都是位圖。
對於矢量圖來說,壓縮是沒有必要的,因為矢量圖是通過命令來實現的,並不是以點陣的形式表現,所以無論妳把他放多大,縮多小,它的命令還是那幾條,根本就沒有改變,而且格式也是沒法改變的,如果改變格式的話將會失去矢量圖的各種功能,所以今天我們就不討論矢量圖,主要談談位圖的壓縮技術。
對於位圖的壓縮,從根本上來說有兩種方法:
第壹種方法,格式類型轉換壓縮。
這種途徑就是利用壹些技術,對圖象重新編碼(如:jpeg就是壹種技術)。對於圖片文件,拓展名有很多,如bmp、jpeg(jpg)、gif等等很多很多,如果想全面了解可以去網上查找壹下,每壹種方件格式都對應壹種圖像的編碼,在這麽多編碼中,jpeg技術可以達到少損(不能說無損)壓縮圖片,如果妳的圖片的文件擴展名是.BMP,那麽妳就應該先將用這種方式可以直接轉換為擴展名是.JPG的壓縮圖片,壓縮後的圖片大小甚至不到原來的十分之壹。操作方法很簡單,用windowXP自帶的畫圖板將圖片打開,然後另存為的時候,把格式選擇成jpg或jpeg就可以了。如果妳是windows2000操作系統,無法用畫圖板保存為jpg文件,妳可以在開始菜單選擇程序-〉附件-〉圖象處理來完成上述操作,操作方法壹樣。妳也可以用QQ的自動轉換功能來轉換圖片格式,方法是將壹幅圖片發給別人,然後“右單擊”QQ上顯示的圖片,選擇另存為。那麽保存後的圖片便是被壓縮後的圖片。當然也有很多的軟件都會帶有這種功能,特別是需要批量處理的時候我建議大家最好使用軟件的幫助,如PhotoShop,ACDSEE,具體的方法我在以後的文章裏面介紹。
現在最流行的技術就是采用jpeg編碼壓縮圖片,下面我引用某圖片專業網站裏面的話來給大家解釋壹下這種技術實現的原理,不想懂的人可以跳過這段:
壓縮文件的基本原理是查找文件內的重復字節,並建立壹個相同字節的"詞典"文件,並用壹個代碼表示,比如在文件裏有幾處有壹個相同的詞"中華人民***和國"用壹個代碼表示並寫入"詞典"文件,這樣就可以達到縮小文件的目的.
由於計算機處理的信息是以二進制數的形式表示的,因此壓縮軟件就是把二進制信息中相同的字符串以特殊字符標記來達到壓縮的目的。為了有助於理解文件壓縮,請您在腦海裏想象壹幅藍天白雲的圖片。對於成千上萬單調重復的藍色像點而言,與其壹個壹個定義“藍、藍、藍……”長長的壹串顏色,還不如告訴電腦:“從這個位置開始存儲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 種字節取值重新編碼,使出現較多的字節使用較短的編碼,出現較少的字節使用較長的編碼,這樣壹來,變短的字節相對於變長的字節更多,文件的總長度就會減少,並且,字節使用比例越不均勻,壓縮比例就越大。
可以這麽說:jpg 已經是壓縮很厲害的了,基本不能再少損壓縮了,根據妳對圖象質量的要求不同,壓縮比可能有很大的差異,但壹般都比較大(這就是技術的魅力)。在使用***它專門的軟件進行壓縮的時候,可能它會給妳壹些壓縮的選項,在圖像質量的調節中妳最好不要低於40%這樣對圖片的損失很大。這本身就是JPEG技術中的壹些選項,看妳需要壓縮到哪壹種程度。
第二種方法:圖片大小的調節(有的可能叫做是分辨率的調節)
這種方法其實就是改變圖片的尺寸大小,壹張3000*2000的照片,將其大小調整為600*400 它的大小將變為原來的 25分之1。當然就位圖表示的原理我們還可以考慮減少圖象的顏色數,但我們壹般不這樣處理。windowsXP操作系統的用戶可以用系統自帶的畫圖板進行修改,操作方法很簡單,將圖片用畫圖板打開後,在“圖像”菜單裏面選擇“拉伸/扭曲”(或者用快捷見ctrl+w),輸入妳要縮小的比例(調節到正常大小即可,若發現太小可以用ctrl+z撤銷操作),最後保存圖片;windows2000操作系統的用戶可以用系統自帶的圖象處理軟件進行修改。操作方法是,在開始菜單選擇程序-〉附件-〉圖象處理,打開圖片後,在“頁面”菜單選擇 屬性-〉大小,即可對圖片大小進行修改。最後保存圖片。使用ACDSEE的朋友可以采取如下操作:用ACDSEE打開妳要壓縮的圖片,在工具欄中選擇“編輯”,然後在彈出的圖像編輯器的工具欄中選擇“調整大小”就可以重新設定圖片的尺寸了,如從1024×768改成640×480,圖片的大小變了,圖片的體積也就自然減小了。當然,改小圖片的尺寸會在壹定程度上影響圖片的觀看效果。
目前互聯網上還出了不少個人開發的專用於圖片體積壓縮的專門軟件,如MyPhotoZip、Jpeg Imager、Image Optimizer等,使用它們還可以對圖片進行更加精準的體積壓縮,不過這些軟件的使用相對會比較麻煩壹點。但是采用的原理無非就是上面我說的兩種方法,有壹些采用了jpeg2000編碼,這是比jpeg更簡潔的壹種技術,相當不錯。對於如何使用更合理的編碼技術來壓縮圖片,這就太深層次了,我雖然也有這方面的資料,但我自已都還沒有深入研究,知道上面這些東西妳就會有壹定的了解了,並且合適地壓縮自已的圖片了。
飛月提醒:圖象的壓縮都是以改變圖象本身的質量為代價的,盡管我們可能根本感覺不到,無論妳采用什麽方法壓縮都是使圖片質量受損。