ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何利用VBA获取BMP图片基础信息?

如何利用VBA获取BMP图片基础信息?

作者:绿色风 分类: 时间:2022-08-17 浏览:152
楼主
amulee
Q:如何利用VBA获取BMP图片基础信息?
A:主要利用BMP图片文件的头信息获取信息,参考以下代码:
  1. '定义位图文件头信息类型
  2. Type BMPHeader
  3.     Header As String    '头信息
  4.     Size As Long        '文件大小
  5.     Width As Long       '宽
  6.     Height As Long      '高
  7.     Bit As Long         '图像位数
  8. End Type

  9. Sub Main()
  10.     Dim FName As String
  11.     Dim BMPHd As BMPHeader
  12.     Dim StrBMP As String
  13.     FName = ThisWorkbook.Path & "\4Bit.bmp"
  14.     BMPHd = GetBmpHeader(FName)
  15.     StrBMP = "文件大小:" & BMPHd.Size & vbCrLf & _
  16.              "图像位数:" & BMPHd.Bit & vbCrLf & _
  17.              "高:" & BMPHd.Height & vbCrLf & _
  18.              "宽:" & BMPHd.Width
  19.     MsgBox StrBMP
  20. End Sub

  21. '获取BMP头信息
  22. Function GetBmpHeader(ByVal FName As String) As BMPHeader
  23.     Dim Temp() As Byte
  24.     Dim FS As Integer
  25.     FS = FreeFile
  26.     '打开文件
  27.     Open FName For Binary Access Read As #FS
  28.         '文件头
  29.         GetFS Temp, 2, FS, 1
  30.         GetBmpHeader.Header = Chr(Temp(1)) & Chr(Temp(2))
  31.         '文件大小
  32.         GetFS Temp, 4, FS, 3
  33.         GetBmpHeader.Size = GetNumber(Temp)
  34.         '图像宽度
  35.         GetFS Temp, 4, FS, 19
  36.         GetBmpHeader.Width = GetNumber(Temp)
  37.         '图像高度
  38.         GetFS Temp, 4, FS, 23
  39.         GetBmpHeader.Height = GetNumber(Temp)
  40.         '图像位数
  41.         GetFS Temp, 2, FS, 29
  42.         GetBmpHeader.Bit = GetNumber(Temp)
  43.     Close #FS
  44. End Function

  45. '数字计算
  46. Function GetNumber(ByVal Temp)
  47.     Dim StrA As String
  48.     Dim StrB As String
  49.     For i = UBound(Temp) To LBound(Temp) Step -1
  50.         StrB = Hex(Temp(i))
  51.         If Len(StrB) = 1 Then StrB = 0 & StrB
  52.         StrA = StrA & StrB
  53.     Next
  54.     GetNumber = WorksheetFunction.Hex2Dec(StrA)
  55. End Function

  56. '读取文件
  57. Sub GetFS(ByRef Temp() As Byte, ByVal Length As Long, ByVal FileNumber As Integer, Optional Pos)
  58.     ReDim Temp(1 To Length)
  59.     If IsMissing(Pos) Then
  60.         Get FileNumber, , Temp
  61.     Else
  62.         Get FileNumber, Pos, Temp
  63.     End If
  64. End Sub



如何获取BMP图片的基础信息.rar
2楼
yjzstar
学习了!

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap