標籤: 暫無標籤

1 Bitmap - BITMAP簡介

Bit-map:就是用一個bit位來標記某個元素對應的Value, 而Key即是該元素。由於採用了Bit為單位來存儲數據,因此在存儲空間方面,可以大大節省。

2 Bitmap -BITMAP的定義

  typedef struct tagBITMAP{

  LONG bmType; //點陣圖類型,必須為0

  LONG bmWidth; //點陣圖寬度

  LONG bmHeight; //點陣圖高度

  LONG bmWidthBytes; //每一行像素所在的byte數

  WORD bmPlanes; //顏色平面數

  WORD bmBitsPixel; //像素的位數

  LPVOID bmBits; //點陣圖內存指針

  }BITMAP;

3 Bitmap -點陣圖圖像(bitmap)

  點陣圖是位的數組,它制訂了像素矩陣中各像素的顏色。

  亦稱為點陣圖像或繪製圖像,是由稱作像素(圖片元素)的單個點組成的。這些點可以進行不同的排列和染色以構成圖樣。當放大點陣圖時,可以看見賴以構成整個圖像的無數單個方塊。擴大點陣圖尺寸的效果是增多單個像素,從而使線條和形狀顯得參差不齊。然而,如果從稍遠的位置觀看它,點陣圖圖像的顏色和形狀又顯得是連續的。在體檢時,工作人員會給你一個本子,在這個本子上有一些圖像,而圖像都是由一個個的點組成的,這和點陣圖圖像其實是差不多的。由於每一個像素都是單獨染色的,您可以通過以每次一個像素的頻率操作選擇區域而產生近似相片的逼真效果,諸如加深陰影和加重顏色。縮小點陣圖尺寸也會使原圖變形,因為此舉是通過減少像素來使整個圖像變小的。同樣,由於點陣圖圖像是以排列的像素集合體形式創建的,所以不能單獨操作(如移動)局部點陣圖。

  點陣圖文件(Bitmap),擴展名可以是.bmp或者.dib。點陣圖是Windows標準格式圖形文件,它將圖像定義為由點(像素)組成,每個點可以由多種色彩表示,包括2、4、8、16、24和32位色彩。例如,一幅1024×768解析度的32位真彩圖片,其所佔存儲位元組數為:1024×768×4=3072KB

  點陣圖文件圖像效果好,但是非壓縮格式的,需要佔用較大存儲空間,不利於在網路上傳送。jpg格式則恰好彌補了點陣圖文件這個缺點。

  bmp格式的文件轉換為jpg格式的文件可以大大減小文件所佔存儲空間。最簡單的方法是,用畫圖打開一個bmp格式的圖片,另存為jpg格式的就行了。

4 Bitmap -處理點陣圖時要著重考慮解析度

  處理點陣圖時,輸出圖像的質量決定於處理過程開始時設置的解析度高低。解析度是一個籠統的術語,它指一個圖像文件中包含的細節和信息的大小,以及輸入、輸出、或顯示設備能夠產生的細節程度。操作點陣圖時,解析度既會影響最後輸出的質量也會影響文件的大小。處理點陣圖需要三思而後行,因為給圖像選擇的解析度通常在整個過程中都伴隨著文件。無論是在一個300 dpi的印表機還是在一個2570dpi的照排設備上印刷點陣圖文件,文件總是以創建圖像時所設的解析度大小印刷,除非印表機的解析度低於圖像的解析度。如果希望最終輸出看起來和屏幕上顯示的一樣,那麼在開始工作前,就需要了解圖像的解析度和不同設備解析度之間的關係。顯然矢量圖就不必考慮這麼多。

RGB

  點陣圖顏色的一種編碼方法,用紅、綠、藍三原色的光學強度來表示一種顏色。這是最常見的點陣圖編碼方法,可以直接用於屏幕顯示。

CMYK

  點陣圖顏色的一種編碼方法,用青、品紅、黃、黑四種顏料含量來表示一種顏色。常用的點陣圖編碼方法之一,可以直接用於彩色印刷。

5 Bitmap -索引顏色/顏色表

  點陣圖常用的一種壓縮方法。從點陣圖圖片中選擇最有代表性的若干種顏色(通常不超過256種)編製成顏色表,然後將圖片中原有顏色用顏色表的索引來表示。這樣原圖片可以被大幅度有損壓縮。適合於壓縮網頁圖形等顏色數較少的圖形,不適合壓縮照片等色彩豐富的圖形。

Alpha通道

  在原有的圖片編碼方法基礎上,增加像素的透明度信息。圖形處理中,通常把RGB三種顏色信息稱為紅通道、綠通道和藍通道,相應的把透明度稱為Alpha通道。多數使用顏色表的點陣圖格式都支持Alpha通道。

色彩深度

  色彩深度又叫色彩位數,即點陣圖中要用多少個二進位位來表示每個點的顏色,是解析度的一個重要指標。常用有1位(單色),2位(4色,CGA),4位(16色,VGA),8位(256色),16位(增強色),24位和32位(真彩色)等。色深16位以上的點陣圖還可以根據其中分別表示RGB三原色或CMYK四原色(有的還包括Alpha通道)的位數進一步分類,如16位點陣圖圖片還可分為R5G6B5,R5G5B5X1(有1位不攜帶信息),R5G5B5A1,R4G4B4A4等等。

6 Bitmap -BitMap演算法

  來自於《編程珠璣》。所謂的Bit-map就是用一個bit位來標記某個元素對應的Value, 而Key即是該元素。由於採用了Bit為單位來存儲數據,因此在存儲空間方面,可以大大節省。

  如果說了這麼多還沒明白什麼是Bit-map,那麼我們來看一個具體的例子,假設我們要對0-7內的5個元素(4,7,2,5,3)排序(這裡假設這些元素沒有重複)。那麼我們就可以採用Bit-map的方法來達到排序的目的。要表示8個數,我們就只需要8個Bit(1Bytes),首先我們開闢1Byte的空間,將這些空間的所有Bit位都置為0

  然後遍歷這5個元素,首先第一個元素是4,那麼就把4對應的位置為1(可以這樣操作 p+(i/8)|(0×01<<(i%8)) 當然了這裡的操作涉及到Big-ending和Little-ending的情況,這裡默認為Big-ending),因為是從零開始的,所以要把第五位置為1。

  然後再處理第二個元素7,將第八位置為1,,接著再處理第三個元素,一直到最後處理完所有的元素,將相應的位置為1。

  然後我們現在遍歷一遍Bit區域,將該位是一的位的編號輸出(2,3,4,5,7),這樣就達到了排序的目的。

上一篇[科林·盧瑟·鮑威爾]    下一篇 [直笛]

相關評論

同義詞:暫無同義詞