使用vb訪問BMP位圖,如何讀取位圖分辨率

發表于:2007-07-14來源:作者:點擊數: 標簽:
Private Declare Function GetObject Lib gdi32 Alias GetObjectA _ (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) _ As Long Private Declare Function GetBitmapBits Lib gdi32 (ByVal hBitmap As Long, _ ByVal dwCount As Long, lpBi
Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" _

(ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) _  
As Long  
Private Declare Function GetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, _  
ByVal dwCount As Long, lpBits As Any) As Long  
  
Private Type BITMAP  
bmType As Long  
bmWidth As Long  
bmHeight As Long  
bmWidthBytes As Long  
bmPlanes As Integer  
bmBitsPixel As Integer  
bmBits As Long  
End Type  
  
Private Sub Command1_Click()  
Dim hBitmap As Long  
Dim res As Long  
Dim bmp As BITMAP  
Dim byteAry() As Byte  
Dim totbyte As Long, i As Long  
hBitmap = Picture1.Picture.Handle  
  
res = GetObject(hBitmap, Len(bmp), bmp) '取得BITMAP的結構  
  
totbyte = bmp.bmWidthBytes * bmp.bmHeight '總共要多少BYTE來存圖  
ReDim byteAry(totbyte - 1)  
'將Picture1中的圖信息存到ByteAry  
res = GetBitmapBits(hBitmap, totbyte, byteAry(0))  
  
Debug.Print "Total Bytes Copied :"; res  
Debug.Print "bmp.bmBits "; bmp.bmBits  
Debug.Print "bmp.bmBitsPixel "; bmp.bmBitsPixel '每相素位數  
Debug.Print "bmp.bmHeight "; bmp.bmHeight '以相素計算圖象高度  
Debug.Print "bmp.bmPlanes "; bmp.bmPlanes  
Debug.Print "bmp.bmType "; bmp.bmType  
Debug.Print "bmp.bmWidth "; bmp.bmWidth '以相素計算圖形寬度  
Debug.Print "bmp.bmWidthBytes "; bmp.bmWidthBytes '以字節計算的每掃描線長度?  
End Sub  
  
位圖信息頭  
  
----  
  
BMP位圖信息頭數據用于說明位圖的尺寸等信息。  
typedef struct tagBITMAPINFOHEADER{  
DWORD biSize; // 本結構所占用字節數  
LONGbiWidth; // 位圖的寬度,以像素為單位  
LONGbiHeight; // 位圖的高度,以像素為單位  
WORD biPlanes; // 目標設備的級別,必須為1  
WORD biBitCount// 每個像素所需的位數,必須是1(雙色),  
// 4(16色),8(256色)或24(真彩色)之一  
DWORD biCompression; // 位圖壓縮類型,必須是 0(不壓縮),  
// 1(BI_RLE8壓縮類型)或2(BI_RLE4壓縮類型)之一  
DWORD biSizeImage; // 位圖的大小,以字節為單位  
LONGbiXPelsPerMeter; // 位圖水平分辨率,每米像素數  
LONGbiYPelsPerMeter; // 位圖垂直分辨率,每米像素數  
DWORD biClrUsed;// 位圖實際使用的顏色表中的顏色數  
DWORD biClrImportant;// 位圖顯示過程中重要的顏色數  
} BITMAPINFOHEADER;  

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97