如何通过API获得BMP文件的大小

解决方案 »

  1.   

    【函数】
    GetBitmapDimensionEx【操作系统】
    Win9X:Yes
    WinNT:Yes【声明】
    Declare Function GetBitmapDimensionEx Lib "gdi32" Alias "GetBitmapDimensionEx" (ByVal hBitmap As Long, lpDimension As SIZE) As Long【说明】  取得一幅位图的宽度和高度。它们是由SetBitmapDimensionEx函数设置的。Windows不会使用位图的大小 【返回值】  Long,非零表示成功,零表示失败。会设置GetLastError 【其它】  参考SetBitmapDimensionEx函数【参数表】
      hBitmap --------  Long,位图句柄  lpDimension ----  SIZE,这个结构用于容纳由SetBitmapDimensionEx函数设置的位图的大小。这个大小以1mm的十分之一为单位
      

  2.   

    在Form中添加一个Picture控件和一个CommandButton控件,在Picture控件中加入一个位图文件,将下面代码加入其中:
    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 LongPrivate Type BITMAP
      bmType As Long
      bmWidth As Long
      bmHeight As Long
      bmWidthBytes As Long
      bmPlanes As Integer
      bmBitsPixel As Integer
      bmBits As Long
    End TypePrivate 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
      

  3.   

    如果不使用api,那么使用stdpicture
    http://zs.njust.edu.cn/student/jixie02/study/jsj/vb5.htm
      

  4.   

    哦,这么麻烦呀用image载入图像读一下它的宽和高不是更方便吗