(六)數(shù)據(jù)壓縮

常用的壓縮文件的擴展名
ZIP:windows,WINZIP可打開
RAR:windows令蛉,WINRAR可打開
LZH(日本):windows聚霜,LZH工具可打開
gz:Unix狡恬,WINZIP可打開
z:Unix,WINZIP可打開


文件以字節(jié)為單位保存

文件壓縮的算法

第一種蝎宇,使用RLE算法弟劲。

RLE算法

1個英文半角字符=1字節(jié),1個漢字全角字符=2字節(jié)
RLE(Run Length Recording姥芥,行程長度編碼)算法:使用 “數(shù)據(jù)x重復次數(shù)” 的方法表示文件兔乞。
如AAAAAABBCDDEEEEEF=17字符=17字節(jié),使用RLE算法壓縮后寫為凉唐,A6B2C1D2E5F1=12字符=12字節(jié)庸追。


優(yōu)點:壓縮機制簡單,容易編寫台囱。
缺點:適合壓縮重復數(shù)據(jù)多的文件锚国,因此適合于壓縮圖像文件,不適合文本文件玄坦。

第二種血筑,使用哈夫曼算法和莫爾斯電碼。

哈夫曼算法

關鍵:多次出現(xiàn)的數(shù)據(jù)用小于8位的字節(jié)數(shù)表示煎楣,不常出現(xiàn)的數(shù)據(jù)用大于8位的字節(jié)數(shù)表示豺总。但是,最后這些數(shù)據(jù)都以8位為單位存儲择懂。


為待壓縮對象文件分別構造最佳的編碼體系喻喳,并基于這種編碼體系進行壓縮。

莫爾斯電碼

莫爾斯電碼的概念構成了壓縮算法的基礎困曙。



例:AAAAAABBCDDEEEEEF=17字符=17字節(jié)
RLE算法:A6B2C1D2E5F1=12字符=12字節(jié)
莫爾斯編碼:A6次+B2次+C1次+D2次+E5次+F1次+字符間隔16次
參考莫爾斯編碼和位長表表伦,4位6次+8位2次+9位1次+6位2次+1位5次+8位1次+2位16次=106位=14字節(jié)

直接使用莫爾斯電碼來壓縮,顯然是有很大提升空間的慷丽。

結合二叉樹的哈夫曼算法

使用二叉樹蹦哼,為出現(xiàn)頻率最多的字符分配最小的位數(shù),提高壓縮率要糊。

使用二叉樹之前纲熏,先嘗試:



缺點:不能明確區(qū)分同位數(shù)的編碼,如100不能明確區(qū)分是C還是BA還是EAA锄俄。

使用二叉樹(哈夫曼樹


使用哈夫曼樹局劲,得到能夠明確區(qū)分的編碼方案。再次回到上面的栗子:
哈夫曼樹編碼后奶赠,
AAAAAABBCDDEEEEEF
=00 00 00 00 00 00 100 100 110 101 101 01 01 01 01 01 111
=2x6+3x2+3x1+3x2+2x5+3x1=40位=5字節(jié)鱼填。
壓縮率大大提高!
使用哈夫曼樹編碼壓縮毅戈,對各種主要文件類型苹丸,都可以得到很高的壓縮率塑猖。

可逆壓縮和非可逆壓縮

圖像文件的數(shù)據(jù)形式

windows中,標準圖像數(shù)據(jù)格式為BMP,即位圖(bitmap)格式谈跛,是一種完全未壓縮的格式羊苟。
其他圖像數(shù)據(jù)格式:

與EXE文件、文本文件不同感憾,多數(shù)情況下蜡励,圖像文件并不要求壓縮后的文件能夠完全還原。

可逆壓縮:壓縮文件能夠完全還原阻桅。
不可逆壓縮:壓縮文件不能完全還原


BMP格式:可逆壓縮凉倚,畫質(zhì)無損失。
JPEG格式:非可逆壓縮嫂沉,因此畫質(zhì)有損失稽寒。
GIF格式:可逆壓縮,但是有顏色不能超過256色的限制趟章,因此在色彩上有損失杏糙。
TIFF格式:可選擇可逆壓縮或不可逆壓縮。這里選擇可逆壓縮蚓土,看到它的大小比BMP格式的圖片還要大宏侍,這是因為包含了標簽的緣故。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蜀漆,一起剝皮案震驚了整個濱河市谅河,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌确丢,老刑警劉巖绷耍,帶你破解...
    沈念sama閱讀 222,865評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異鲜侥,居然都是意外死亡褂始,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評論 3 399
  • 文/潘曉璐 我一進店門剃毒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來病袄,“玉大人搂赋,你說我怎么就攤上這事赘阀。” “怎么了脑奠?”我有些...
    開封第一講書人閱讀 169,631評論 0 364
  • 文/不壞的土叔 我叫張陵基公,是天一觀的道長。 經(jīng)常有香客問我宋欺,道長轰豆,這世上最難降的妖魔是什么胰伍? 我笑而不...
    開封第一講書人閱讀 60,199評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮酸休,結果婚禮上骂租,老公的妹妹穿的比我還像新娘。我一直安慰自己斑司,他們只是感情好渗饮,可當我...
    茶點故事閱讀 69,196評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著宿刮,像睡著了一般互站。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上僵缺,一...
    開封第一講書人閱讀 52,793評論 1 314
  • 那天胡桃,我揣著相機與錄音,去河邊找鬼磕潮。 笑死翠胰,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的自脯。 我是一名探鬼主播亡容,決...
    沈念sama閱讀 41,221評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼冤今!你這毒婦竟也來了闺兢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,174評論 0 277
  • 序言:老撾萬榮一對情侶失蹤戏罢,失蹤者是張志新(化名)和其女友劉穎屋谭,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體龟糕,經(jīng)...
    沈念sama閱讀 46,699評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡桐磁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,770評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了讲岁。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片我擂。...
    茶點故事閱讀 40,918評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖缓艳,靈堂內(nèi)的尸體忽然破棺而出校摩,到底是詐尸還是另有隱情,我是刑警寧澤阶淘,帶...
    沈念sama閱讀 36,573評論 5 351
  • 正文 年R本政府宣布衙吩,位于F島的核電站,受9級特大地震影響溪窒,放射性物質(zhì)發(fā)生泄漏坤塞。R本人自食惡果不足惜冯勉,卻給世界環(huán)境...
    茶點故事閱讀 42,255評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望摹芙。 院中可真熱鬧灼狰,春花似錦、人聲如沸浮禾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽伐厌。三九已至承绸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間挣轨,已是汗流浹背军熏。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留卷扮,地道東北人荡澎。 一個月前我還...
    沈念sama閱讀 49,364評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像晤锹,于是被迫代替她去往敵國和親摩幔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,926評論 2 361

推薦閱讀更多精彩內(nèi)容