8點陣圖壓縮
Ⅰ 求單色點陣圖,16色點陣圖,24色點陣圖和256色點陣圖之間的區別
1、顏色不同。
單色點陣圖:黑白。
16色點陣圖:彩色。
24色點陣圖:彩色。
256色點陣圖:顏色。
2、顏色的數量不同
單色點陣圖:由兩種顏色組成。
16色點陣圖:由16種顏色組成。
24色點陣圖:由24種顏色組成。
256色點陣圖:由256色組成。
3、顏色深度不同
單色點陣圖:單位。
16色點陣圖:4位。
24色點陣圖:真彩色。
256色點陣圖:8位。
顏色深度又稱為顏色位,即用多少二進制位來表示點陣圖中每個點的顏色是一個重要的解析度指標。常用的有1位(單色)、2位(4色、CGA)、4位(16色、VGA)、8位(256色)、16位(增強色)、24位和32位(真彩色)等。
(1)8點陣圖壓縮擴展閱讀:
顏色深度
一種常用的點陣圖壓縮方法。從點陣圖圖像中選擇最具代表性的顏色(通常不超過256種)來生成顏色表,然後使用顏色表的索引來表示圖像中的原始顏色。
這樣,可以對原始圖像進行有損壓縮。適用於網頁圖形等顏色較少的圖形壓縮,不適用於照片等顏色豐富的圖形壓縮。
在原有圖像編碼方法的基礎上,增加了像素的透明度信息。在圖形處理中,通常調用RGB三種顏色信息紅色通道、綠色通道和藍色通道,並相應調用透明alpha通道。
大多數使用顏色表的點陣圖格式都支持alpha通道。
顏色深度為8位或8位以上的點陣圖可以根據表示RGB原色或CMYK原色的位數(一些包括alpha通道)進一步分類,例如,16位點陣圖還可以分為r5g6b5、r5g5b5x1(一位不攜帶信息)、r5g5b5a1、r4g4b4a4等。
Ⅱ 點陣圖文件的壓縮方法
色彩深度又叫色彩位數,即點陣圖中要用多少個二進制位來表示每個點的顏色,是解析度的一個重要指標。常用有1位(單色),2位(4色,CGA),4位(16色,VGA),8位(256色),16位(增強色),24位和32位(真彩色)等。色深16位以上的點陣圖還可以根據其中分別表示RGB三原色或CMYK四原色(有的還包括Alpha通道)的位數進一步分類,如16位點陣圖圖片還可分為R5G6B5,R5G5B5X1(有1位不攜帶信息),R5G5B5A1,R4G4B4A4等等
Ⅲ 我想了解點陣圖、像素等相關基礎知識
點陣圖圖像
點陣圖圖像是用每一個柵格內不同顏色的點來描述圖像屬性的,這些點就是我們常說的像素。就拿前面的橢圓來說吧,也可以由所有組成該橢圓的像素的位置和顏色來描述。因為編輯點陣圖時,修改的是像素,而不是直線和曲線。因此無法通過修改描述橢圓輪廓的直線或曲線來更改橢圓的性質。
點陣圖圖像的解析度不是獨立的,因為描述圖像的數據是對特定大小柵格中圖像而言的,因此,編輯點陣圖會改變它的顯示質量,尤其是放縮圖像,會因為圖像在柵格內的重新分配而導致圖像邊緣粗糙。在比點陣圖圖像本身的解析度低的輸出設備上顯示圖像也會降低圖像的顯示質量。
=================================
像素,就是圖像最基本的單位(Pixel),最簡單的示範,就是利用圖像編輯軟體,將圖像放大至無法分割的圖像單位。
單一像素長與寬的比例不見得是正方形(1:1),依照不同的系統尚有「1.45:1」以及「0.97:1」的比例,每一個像素都有一個對應的色板。
1bit=2色
7bit=128色
4bit=16色
8bit=256色
5bit=32色
16bit=32768色
6bit=64色
24bit=16777216色
也就是說,越高位的像素,其擁有的色板也就越豐富,越能表達顏色的真實感。
Ⅳ 如何製作Bitmap(bmp)文件
註:本文參考了林福宗老師的有關BMP文件格式的文章,在此聲明。
簡介
BMP(Bitmap-File)圖形文件是Windows採用的圖形文件格式,在Windows環境下運行的所有圖象處理軟體都支持BMP圖象文件格式。Windows系統內部各圖像繪制操作都是以BMP為基礎的。Windows 3.0以前的BMP圖文件格式與顯示設備有關,因此把這種BMP圖象文件格式稱為設備相關點陣圖DDB(device-dependent bitmap)文件格式。Windows 3.0以後的BMP圖象文件與顯示設備無關,因此把這種BMP圖象文件格式稱為設備無關點陣圖DIB(device-independent bitmap)格式(註:Windows 3.0以後,在系統中仍然存在DDB點陣圖,象BitBlt()這種函數就是基於DDB點陣圖的,只不過如果你想將圖像以BMP格式保存到磁碟文件中時,微軟極力推薦你以DIB格式保存),目的是為了讓Windows能夠在任何類型的顯示設備上顯示所存儲的圖象。BMP點陣圖文件默認的文件擴展名是BMP或者bmp(有時它也會以.DIB或.RLE作擴展名)。
6.1.2 文件結構
點陣圖文件可看成由4個部分組成:點陣圖文件頭(bitmap-file header)、點陣圖信息頭(bitmap-information header)、彩色表(color table)和定義點陣圖的位元組陣列,它具有如下所示的形式。
點陣圖文件的組成 結構名稱 符號
點陣圖文件頭(bitmap-file header)BITMAPFILEHEADERbmfh
點陣圖信息頭(bitmap-information header)BITMAPINFOHEADERbmih
彩色表(color table)RGBQUADaColors[]
圖象數據陣列位元組BYTEaBitmapBits[]
點陣圖文件結構可綜合在表6-01中。
表01 點陣圖文件結構內容摘要
偏移量 域的名稱 大小 內容
圖象文件
頭0000h文件標識2 bytes兩位元組的內容用來識別點陣圖的類型:
『BM』 : Windows 3.1x, 95, NT, …
『BA』 :OS/2 Bitmap Array
『CI』 :OS/2 Color Icon
『CP』 :OS/2 Color Pointer
『IC』 : OS/2 Icon
『PT』 :OS/2 Pointer
註:因為OS/2系統並沒有被普及開,所以在編程時,你只需判斷第一個標識「BM」就行。
0002hFile Size1 dword用位元組表示的整個文件的大小
0006hReserved1 dword保留,必須設置為0
000AhBitmap Data Offset1 dword從文件開始到點陣圖數據開始之間的數據(bitmap data)之間的偏移量
000EhBitmap Header Size1 dword點陣圖信息頭(Bitmap Info Header)的長度,用來描述點陣圖的顏色、壓縮方法等。下面的長度表示:
28h - Windows 3.1x, 95, NT, …
0Ch - OS/2 1.x
F0h - OS/2 2.x
註:在Windows95、98、2000等操作系統中,點陣圖信息頭的長度並不一定是28h,因為微軟已經制定出了新的BMP文件格式,其中的信息頭結構變化比較大,長度加長。所以最好不要直接使用常數28h,而是應該從具體的文件中讀取這個值。這樣才能確保程序的兼容性。
0012hWidth1 dword點陣圖的寬度,以象素為單位
0016hHeight1 dword點陣圖的高度,以象素為單位
001AhPlanes1 word點陣圖的位面數(註:該值將總是1)
圖象
信息
頭
001ChBits Per Pixel1 word每個象素的位數
1 - 單色點陣圖(實際上可有兩種顏色,預設情況下是黑色和白色。你可以自己定義這兩種顏色)
4 - 16 色點陣圖
8 - 256 色點陣圖
16 - 16bit 高彩色點陣圖
24 - 24bit 真彩色點陣圖
32 - 32bit 增強型真彩色點陣圖
001EhCompression1 dword壓縮說明:
0 - 不壓縮 (使用BI_RGB表示)
1 - RLE 8-使用8位RLE壓縮方式(用BI_RLE8表示)
2 - RLE 4-使用4位RLE壓縮方式(用BI_RLE4表示)
3 - Bitfields-位域存放方式(用BI_BITFIELDS表示)
0022hBitmap Data Size1 dword用位元組數表示的點陣圖數據的大小。該數必須是4的倍數
0026hHResolution1 dword用象素/米表示的水平解析度
002AhVResolution1 dword用象素/米表示的垂直解析度
002EhColors1 dword點陣圖使用的顏色數。如8-比特/象素表示為100h或者 256.
0032hImportant Colors1 dword指定重要的顏色數。當該域的值等於顏色數時(或者等於0時),表示所有顏色都一樣重要
調色板數據根據BMP版本的不同而不同PaletteN * 4 byte調色板規范。對於調色板中的每個表項,這4個位元組用下述方法來描述RGB的值: 1位元組用於藍色分量
1位元組用於綠色分量
1位元組用於紅色分量
1位元組用於填充符(設置為0)
圖象數據根據BMP版本及調色板尺寸的不同而不同Bitmap Dataxxx bytes該域的大小取決於壓縮方法及圖像的尺寸和圖像的位深度,它包含所有的點陣圖數據位元組,這些數據可能是彩色調色板的索引號,也可能是實際的RGB值,這將根據圖像信息頭中的位深度值來決定。
構件詳解
1. 點陣圖文件頭
點陣圖文件頭包含有關於文件類型、文件大小、存放位置等信息,在Windows 3.0以上版本的點陣圖文件中用BITMAPFILEHEADER結構來定義:
typedef struct tagBITMAPFILEHEADER { /* bmfh */
UINT bfType;
DWORD bfSize;
UINT bfReserved1;
UINT bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER;
其中:
bfType說明文件的類型.(該值必需是0x4D42,也就是字元'BM'。我們不需要判斷OS/2的點陣圖標識,這么做現在來看似乎已經沒有什麼意義了,而且如果要支持OS/2的點陣圖,程序將變得很繁瑣。所以,在此只建議你檢察'BM'標識)
bfSize說明文件的大小,用位元組為單位
bfReserved1保留,必須設置為0
bfReserved2保留,必須設置為0
bfOffBits說明從文件頭開始到實際的圖象數據之間的位元組的偏移量。這個參數是非常有用的,因為點陣圖信息頭和調色板的長度會根據不同情況而變化,所以你可以用這個偏移值迅速的從文件中讀取到位數據。
2. 點陣圖信息頭
點陣圖信息用BITMAPINFO結構來定義,它由點陣圖信息頭(bitmap-information header)和彩色表(color table)組成,前者用BITMAPINFOHEADER結構定義,後者用RGBQUAD結構定義。BITMAPINFO結構具有如下形式:
typedef struct tagBITMAPINFO { /* bmi */
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[1];
} BITMAPINFO;
其中:
bmiHeader說明BITMAPINFOHEADER結構,其中包含了有關點陣圖的尺寸及位格式等信息
bmiColors說明彩色表RGBQUAD結構的陣列,其中包含索引圖像的真實RGB值。
BITMAPINFOHEADER結構包含有點陣圖文件的大小、壓縮類型和顏色格式,其結構定義為:
typedef struct tagBITMAPINFOHEADER { /* bmih */
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
} BITMAPINFOHEADER;
其中:
biSize說明BITMAPINFOHEADER結構所需要的字數。註:這個值並不一定是BITMAPINFOHEADER結構的尺寸,它也可能是sizeof(BITMAPV4HEADER)的值,或是sizeof(BITMAPV5HEADER)的值。這要根據該點陣圖文件的格式版本來決定,不過,就現在的情況來看,絕大多數的BMP圖像都是BITMAPINFOHEADER結構的(可能是後兩者太新的緣故吧:-)。
biWidth說明圖象的寬度,以象素為單位
biHeight說明圖象的高度,以象素為單位。註:這個值除了用於描述圖像的高度之外,它還有另一個用處,就是指明該圖像是倒向的點陣圖,還是正向的點陣圖。如果該值是一個正數,說明圖像是倒向的,如果該值是一個負數,則說明圖像是正向的。大多數的BMP文件都是倒向的點陣圖,也就是時,高度值是一個正數。(註:當高度值是一個負數時(正向圖像),圖像將不能被壓縮(也就是說biCompression成員將不能是BI_RLE8或BI_RLE4)。
biPlanes為目標設備說明位面數,其值將總是被設為1
biBitCount說明比特數/象素,其值為1、4、8、16、24、或32
biCompression說明圖象數據壓縮的類型。
Ⅳ 一副未經壓縮的點陣圖圖像,解析度為320×320顏色深度為8位其數據量是
解析度為320×320,指的是這幅圖像由320×320個像素點組成。顏色深度為8位指每個像素點有8位來表示。
則這幅圖像的數據量為320×320×8=819200位
819200÷8=102400位元組
102400÷1024=100KB
Ⅵ 點陣圖都是有壓縮格式的嗎
bitmap都是無壓縮的。
用UltraEdit打開一個Bitmap文件,選擇Hex方式查看:
A>. 前面的14個位元組是頭,前面10位元組可以直接抄過來,不用變,但後面4個位元組是描述圖像內容的起始地址.
B>. 然後第15,16,17,18位元組是Info段的長度,這段一般是40位元組長,19,20,21,22是長,23,24,25,26是高,後面的是描述是否壓縮啊什麼的記不大清楚了.
C>. 如果是24bit圖,每個點保存RGB共三個位元組,32bit多一個alpha共4個位元組.
如果保存8bit圖,則在Info段後跟色表,注意A>裡面的圖像起始數據Address要後移
a>. 色表格式:BGRA0,BGRA1....BGRA255填充,每種顏色4個位元組;
b>. 圖像存儲使用index,比如位元組0代表色表內的BGRA0;
D>. 4Bit/2Bit色格式和C類似,不過每種顏色佔4/2Bit;
另外:
對齊:在32bit系統內按照32bit對齊,每行數據不足4位元組,補0x00;
壓縮:bitmap一般很少壓縮,壓縮一般使用的runlength;
查查這方面的資料,網上不少.
Ⅶ 先跪,求用動態規劃壓縮8點陣圖的c++程序,也可解壓的~學數據結構實力~
數據壓縮演算法和動態規劃有什麼直接關系...
Ⅷ 如何計算點陣圖大小,詳細點,包括8位和24位的
BMP
BMP是一種與硬體設備無關的圖像文件格式,使用非常廣。它採用位映射存儲格式,除了圖像深度可選以外,不採用其他任何壓縮,因此,BMP文件所佔用的空間很大。BMP文件的圖像深度可選lbit、4bit、8bit及24bit。BMP文件存儲數據時,圖像的掃描方式是按從左到右、從下到上的順序。
由於BMP文件格式是Windows環境中交換與圖有關的數據的一種標准,因此在Windows環境中運行的圖形圖像軟體都支持BMP圖像格式。
典型的BMP圖像文件由三部分組成:點陣圖文件頭數據結構,它包含BMP圖像文件的類型、顯示內容等信息;點陣圖信息數據結構,它包含有BMP圖像的寬、高、壓縮方法,以及定義顏色等信息。
具體數據舉例:
如某BMP文件開頭:
424D 4690 0000 0000 0000 4600 0000 2800 0000 8000 0000 9000 0000 0100*1000 0300 0000 0090 0000 A00F 0000 A00F 0000 0000 0000 0000 0000*00F8 0000 E007 0000 1F00 0000 0000 0000*02F1 84F1 04F1 84F1 84F1 06F2 84F1 06F2 04F2 86F2 06F2 86F2 86F2 .... ....
BMP文件可分為四個部分:點陣圖文件頭、點陣圖信息頭、彩色板、圖像數據陣列,在上圖中已用*分隔。
一、圖像文件頭
1)1:(這里的數字代表的是"字",即兩個位元組,下同)圖像文件頭。424Dh=』BM』,表示是Windows支持的BMP格式。
2)2-3:整個文件大小。4690 0000,為00009046h=36934。
3)4-5:保留,必須設置為0。
4)6-7:從文件開始到點陣圖數據之間的偏移量。4600 0000,為00000046h=70,上面的文件頭就是35字=70位元組。
5)8-9:點陣圖圖信息頭長度。
6)10-11:點陣圖寬度,以像素為單位。8000 0000,為00000080h=128。
7)12-13:點陣圖高度,以像素為單位。9000 0000,為00000090h=144。
8)14:點陣圖的位面數,該值總是1。0100,為0001h=1。
二、點陣圖信息頭
9)15:每個像素的位數。有1(單色),4(16色),8(256色),16(64K色,高彩色),24(16M色,真彩色),32(4096M色,增強型真彩色)。1000為0010h=16。
10)16-17:壓縮說明:有0(不壓縮),1(RLE 8,8位RLE壓縮),2(RLE 4,4位RLE壓縮,3(Bitfields,位域存放)。RLE簡單地說是採用像素數+像素值的方式進行壓縮。T408採用的是位域存放方式,用兩個位元組表示一個像素,位域分配為r5b6g5。圖中0300 0000為00000003h=3。
11)18-19:用位元組數表示的點陣圖數據的大小,該數必須是4的倍數,數值上等於點陣圖寬度×點陣圖高度×每個像素位數。0090 0000為00009000h=80×90×2h=36864。
12)20-21:用象素/米表示的水平解析度。A00F 0000為0000 0FA0h=4000。
13)22-23:用象素/米表示的垂直解析度。A00F 0000為0000 0FA0h=4000。
14)24-25:點陣圖使用的顏色索引數。設為0的話,則說明使用所有調色板項。
15)26-27:對圖象顯示有重要影響的顏色索引的數目。如果是0,表示都重要。
三、彩色板
16)28-35:彩色板規范。對於調色板中的每個表項,用下述方法來描述RGB的值:
1位元組用於藍色分量
1位元組用於綠色分量
1位元組用於紅色分量
1位元組用於填充符(設置為0)
對於24-位真彩色圖像就不使用彩色板,因為點陣圖中的RGB值就代表了每個象素的顏色。
如,彩色板為00F8 0000 E007 0000 1F00 0000 0000 0000,其中:
00FB 0000為FB00h=1111100000000000(二進制),是紅色分量的掩碼。
E007 0000為 07E0h=0000011111100000(二進制),是綠色分量的掩碼。
1F00 0000為001Fh=0000000000011111(二進制),是紅色分量的掩碼。
0000 0000總設置為0。
將掩碼跟像素值進行「與」運算再進行移位操作就可以得到各色分量值。看看掩碼,就可以明白事實上在每個像素值的兩個位元組16位中,按從高到低取5、6、5位分別就是r、g、b分量值。取出分量值後把r、g、b值分別乘以8、4、8就可以補齊第個分量為一個位元組,再把這三個位元組按rgb組合,放入存儲器(同樣要反序),就可以轉換為24位標准BMP格式了。
四、圖像數據陣列
17)17-...:每兩個位元組表示一個像素。陣列中的第一個位元組表示點陣圖左下角的象素,而最後一個位元組表示點陣圖右上角的象素。
五、存儲演算法
BMP文件通常是不壓縮的,所以它們通常比同一幅圖像的壓縮圖像文件格式要大很多。例如,一個800×600的24位幾乎占據1.4MB空間。因此它們通常不適合在網際網路或者其它低速或者有容量限制的媒介上進行傳輸。 根據顏色深度的不同,圖像上的一個像素可以用一個或者多個位元組表示,它由n/8所確定(n是位深度,1位元組包含8個數據位)。圖片瀏覽器等基於位元組的ASCII值計算像素的顏色,然後從調色板中讀出相應的值。更為詳細的信息請參閱下面關於點陣圖文件的部分。 n位2n種顏色的點陣圖近似位元組數可以用下面的公式計算: BMP文件大小約等於 54+4*2的n次方+(w*h*n)/8
,其中高度和寬度都是像素數。 需要注意的是上面公式中的54是點陣圖文件的文件頭,是彩色調色板的大小。另外需要注意的是這是一個近似值,對於n位的點陣圖圖像來說,盡管可能有最多2n中顏色,一個特定的圖像可能並不會使用這些所有的顏色。由於彩色調色板僅僅定義了圖像所用的顏色,所以實際的彩色調色板將小於。 如果想知道這些值是如何得到的,請參考下面文件格式的部分。 由於存儲演算法本身決定的因素,根據幾個圖像參數的不同計算出的大小與實際的文件大小將會有一些細小的差別。