欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
BMP、GIF和JPEG文件格式簡(jiǎn)介及相互轉換
BMP、GIF和JPEG文件格式簡(jiǎn)介及相互轉換
BMP、GIF和JPEG文件格式簡(jiǎn)介及相互轉換

圖象文件就是描繪了一幅圖象的計算機磁盤(pán)文件。形成數字圖象數據后,將其存儲在計算機里的方法有2種,即位映射和向量處理方式。
  我們這里主要討論的是位圖。不同圖象軟件幾乎都用各種的方法處理圖象,圖象格式也多種多樣,它主要包括文件識別頭和圖象數據。文件識別頭用來(lái)讓計算機判斷是哪種文件格式,圖象數據包含了整個(gè)對圖象描繪相關(guān)數據,包括調色板、位圖映象等。根據壓縮算法不同,映象方式也不同,下面簡(jiǎn)要介紹一下壓縮算法。 

一、 行程長(cháng)度壓縮 
  原理是將一掃描行中的顏色值相同的相鄰像素用一個(gè)計數值和那些像素的顏色值來(lái)代替。例如:aaabccccccddeee,則可用3a1b6c2d3e 來(lái)代替。對于擁有大面積,相同顏色區域的圖像,用RLE壓縮方法非常有效。由RLE原理派生出許多具體行程壓縮方法: 
  1.PCX行程壓縮方法: 該算法實(shí)際上是位映射格式到壓縮格式的轉換算法,該算法對于連續出現1次的字節Ch,若Ch>0xc0則壓縮時(shí)在該字節前加上0xc1,否則直接輸出Ch,對于連續出現N 次的字節Ch,則壓縮成0xc0+N,Ch這兩個(gè)字節,因而N最大只能為ff-c0=3fh(十進(jìn)制為63),當N大于 63時(shí), 則需分多次壓縮。 
  2.BI_RLE8壓縮方法:在WINDOWS的位圖文件中采用了這種壓縮方法。該壓縮方法編碼也是以?xún)蓚€(gè)字節為基本單位。其中第一個(gè)字節規定了用第二個(gè)字節指定的顏色重復次數。 如編碼 0504表示從當前位置開(kāi)始連續顯示5個(gè)顏色值為04的像素。當第二個(gè)字節為零時(shí)第二個(gè)字節有特殊含義:0表示行末;1表示圖末;2轉義后面2個(gè)字節, 這兩個(gè)字節分別表示下一像素相對于當前位置的水平位移和垂直位移。這種壓縮方法所能壓縮的圖像像素位數最大為8位(256色)圖像。
  3.BI_RLE壓縮方法: 該方法也用于WINDOWS位圖文件中,它與 BI_RLE8編碼類(lèi)似,唯一不同是:BI_RLE4的一個(gè)字節包含了兩個(gè)像素的顏色,因此,它只能壓縮的顏色數不超過(guò)16的圖像。因而這種壓縮應用范圍有限。 
  4.緊縮位壓縮方法(Packbits):該方法是用于A(yíng)pple公司的Macintosh機上的位圖數據壓縮 方法, TIFF 規范中使用了這種方法, 這種壓縮方法與BI_RLE8壓縮方法相似,如1c1c1c2132325648 壓縮為:83 1c 21 81 32 56 48,顯而易見(jiàn),  這種壓縮方法最好情況是每連續128個(gè)字節相同,這128個(gè)字節可壓縮為一個(gè)數值7f。這種方法還是非常有效的。 

二、霍夫曼編碼壓縮: 
  也是一種常用的壓縮方法。是1952年為文本文件建立的,其基本原理是頻繁使用的數據用較短的代碼代替,很少使用的數據用較長(cháng)的代碼代替,每個(gè)數據的代碼各不相同。這些代碼都是二進(jìn)制碼,且碼的長(cháng)度是可變的。如: 有一個(gè)原始數據序列,ABACCDAA則編碼為A(0),B(10),C(110), (D111),壓縮后為010011011011100。產(chǎn)生霍夫曼編碼需要對原始數據掃描兩遍,第一遍掃描要精確地統計出原始數據中的每個(gè)值出現的頻率,第二遍是建立霍夫曼樹(shù)并進(jìn)行編碼,由于需要建立二叉樹(shù)并遍歷二叉樹(shù)生成編碼,因此數據壓縮和還原速度都較慢,但簡(jiǎn)單有效,因而得到廣泛的應用。

三、LZW壓縮方法 
  LZW壓縮技術(shù)比其它大多數壓縮技術(shù)都復雜, 壓縮效率也較高。其基本原理是把每一個(gè)第一次出現的字符串用一個(gè)數值來(lái)編碼,在還原程序中再將這個(gè)數值還成原來(lái)的字符 串,如用數值0x100代替字符串"abccddeee"這樣每當出現該字符串時(shí),都用0x100代替,起到了壓縮的作用。 至于 0x100與字符串的對應關(guān)系則是在壓縮過(guò)程中動(dòng)態(tài)生成的,而且這種對應關(guān)系是隱含在壓縮數據中,隨著(zhù)解壓縮的進(jìn)行這張編碼表會(huì )從壓縮數據中逐步得到恢復,后面的壓縮數據再根據前面數據產(chǎn)生的對應關(guān)系產(chǎn)生更多的對應關(guān)系。直到壓縮文件結束為止。LZW是可逆的, 所有信息全部保留。

四、算術(shù)壓縮方法 
  算術(shù)壓縮與霍夫曼編碼壓縮方法類(lèi)似,只不過(guò)它比霍夫曼編碼更加有效。算術(shù)壓縮適合于由相同的重復序列組成的文件,算術(shù)壓縮接近壓縮的理論極限。這種方法,是將不同的序列映像到0到1之間的區域內,該區域表示成可變精度(位數 

screen.width/2)this.width=screen.width/2" vspace=2 border=0>的二進(jìn)制小數,越不常見(jiàn)的數據要的精度越高(更多的位數),這種方法比較復雜,因而不太常用。

五、 JPEG( 聯(lián)合攝影專(zhuān)家組 Joint Photographic Exprerts Group) 
  JPEG標準與其它的標準不同,它定義了不兼容的編碼方法,在它最常用的模式中,它是帶失真的,一個(gè)從JPEG文件恢復出來(lái)的圖像與原始圖像總是不同的,但有損壓縮重建后的圖像常常比原始圖像的效果更好。JPEG的另一個(gè)顯著(zhù)的特點(diǎn)是它的壓縮比例相當高,原圖像大小與壓縮后的圖像大小相比,比例可以從 1%到80~90%不等。 這種方法效 果也好,適合多媒體系統。

  介紹完了壓縮算法,我們來(lái)簡(jiǎn)要介紹一下三種位圖格式的異同和它們之間的相互轉換。
  1. bmp圖象
   · 位圖文件頭(BITMAPHEADER)數據結構
   · 位圖信息(BITMAPINFO)數據結構
   · 位圖陣列

  1)位圖文件頭數據結構包含BMP圖象文件的類(lèi)型、顯示內容等信息。
  Typedef struct{
      Int bfType; //must be "BM"
      Long bfSize; //位圖大小
      Int bfReserved1;//must be "0"
      Int bfReserved2;//must be "0"
      Long bfOffBits;//位圖陣列的起始位置
  }BITMAPEFILEHEADER;

  2)位圖信息數據結構由BITMAPINFOHEADER和RGBQUAD兩個(gè)數據結構組成,
  typedef struct{
      BITMAPINFOHEADER bmiHeader;
      RGBQUAD bmiColors[];
  }BITMAPINFO

  其中BITMAPINFOHEADER數據結構包含了有關(guān)BMP圖象的寬、高、壓縮方法等信息。
  數據結構RGBQUAD定義一種顏色。

  3)位圖陣列
  位圖陣列記錄了圖象的每一個(gè)象素值。從圖象的左下角開(kāi)始逐行掃描圖象。從左到右,從上到下,將圖象的象素值逐一記錄下來(lái),這些記錄象素值的字節組成了位圖陣列。
  位圖陣列數據的存儲格式有壓縮和非壓縮兩種格式。
  1. 非壓縮格式 位圖中的每一個(gè)點(diǎn)的象素值對應與位圖陣列的若干位,而位圖陣列的若干位由圖象的高度、寬度及圖象的顏色數決定。
  2. 壓縮格式 在bmp格式文件中,Windows支持BI-RLE8和BI-RLE4兩種壓縮類(lèi)型的存儲格式。

  2、GIF圖象文件格式
  GIF的全稱(chēng)是Graphics Interchange Format,.譯做圖形交換格式。GIF是一種公用的圖象文件格式標準,但它歸compuServe公司版權所有。

  在一個(gè)GIF文件中首先碰到的是GIF的標志,這個(gè)標志告訴解碼程序這是個(gè)GIF文件。這個(gè)標志是3字節的串:GIF。一個(gè)GIF文件中可以存放多幅圖象,但絕大多數的文件都只包含一幅圖象。
  然后是屏幕描述字(screen descriptor),說(shuō)明了用來(lái)生成的顯示文件中的圖象的顯示器分辨率,分別表示屏幕的寬和高。
  緊跟下來(lái)的一個(gè)字節是全局標志,其低三位說(shuō)明了即將碰到的圖象是多少顏色的。最高位表示是否存在一個(gè)全局色彩表。
  背景色表示把背景置成適當的顏色,實(shí)際上是一個(gè)指向全局色彩表的數。
  Struct Global_Data{
    Unsigned short screen_width;
    Unsigned short screen_height;
    Unsigned char background;
    har tail=‘\0‘;
    }
  接下來(lái)是全局色彩表,按順序存放所有的嚴肅,每一種嚴肅由色彩表的一項來(lái)描述,每項是3字節,分別表示紅、綠、藍三種原色的強度。其長(cháng)度有全局標志的低三位表示。
  以后的數據都是局部的了。是些數據塊的集合。下面是圖象數據塊的結構。
  Struct Local_Head{
      Char heading=‘,‘;
      Unsigned short image_left;//圖象的屏幕上顯示的起始位置
    Unsigned short image_top;
    Unsigned short image_width;
    Unsigned short image-height;
    Unsigned char local_flag;//局部標志
    } 

  局部標志和 全局標志的不同之處在于次高位,如果這位被置成1則表示圖像的位圖數據是以隔行方式存放的。也就是說(shuō),在解開(kāi)的位圖數據中,第一行存放的是屏幕上第一行,第二行對應屏幕上的第9行,第三行對應屏幕上的第17行,以此遞增--這是第一遍掃描;第二遍掃描是從屏幕上的第5行開(kāi)始,兩行之間也是以 8遞增;第三遍掃描是從屏幕上的第3行開(kāi)始,兩行之間以4遞增;第四遍掃描,也是最后一遍,從第2行開(kāi)始,兩行之間以2遞增。
 
  隔行存放的GIF圖像在邊解碼邊顯示的時(shí)候可分成四遍掃描。第一遍掃描雖然只顯示了整個(gè)圖像的八分之一,第二遍的掃描后也只顯示了四分之一,但這已經(jīng)把整個(gè)圖像的概貌顯示出來(lái)了。在顯示GIF圖像的時(shí),隔行存放的圖像會(huì )給你這樣一個(gè)印象:向它的顯示速度似乎要比其他圖像快一些,這是隔行存放的優(yōu)點(diǎn)。
  在GIF圖像的編解碼中用到了LZW壓縮算法--把這些字符流轉換成另一種形式的代碼流,解碼過(guò)程則是把這種代碼流還原成原來(lái)的字符流。

  3、JPEG圖象文件格式
  JPEG是Joint Photographic Experts Group(聯(lián)合攝影專(zhuān)家小組)的首字母縮寫(xiě)。JPEG的主要作用是用于數字化圖象的標準編碼技術(shù)。JPEG圖象文件是一種象素格式文件格式,但它比諸如象GIF、BMP等圖象文件要復雜的多。所幸,我們在使用由JPEG組成的JPEG 庫時(shí),只要對該文件格式有個(gè)一般的了解就可以了。而沒(méi)有必要對JPEG文件格式做一個(gè)全面細致的了解。
  JPEG格式是種有損的編碼格式,但如果GIF文件比,他經(jīng)過(guò)解碼后的重構圖象要比GIF圖象更接近于原始的圖象。 JPEG編碼技術(shù)是由顏色轉換、DCT變換、進(jìn)行量化、編碼。其壓縮格式由著(zhù)名的JPEG集團所著(zhù)的4.0版本的庫所定。

  關(guān)于這3種圖象格式的互相轉換,主要是用c語(yǔ)言或c++和匯編語(yǔ)言,因為這些語(yǔ)言可以 直接進(jìn)行底層的操作,把圖象解壓縮后按用另一種格式要求進(jìn)行壓縮即可。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
各種圖片格式詳解
各種圖片文件格式及pcx格式的介紹
PS中通道的作用
怎樣將JPEG 圖像格式轉換成jpg、gif、jpeg、png、bmp格式
BMP位圖文件的存儲格式 - 技術(shù)文檔 - 新手入門(mén) Linux時(shí)代 - 開(kāi)源、自由、共享...
BMP讀取(一)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久