作者:绿色风
分类:
时间:2022-08-17
浏览:152
楼主 amulee |
Q:如何利用VBA获取BMP图片基础信息? A:主要利用BMP图片文件的头信息获取信息,参考以下代码:
- '定义位图文件头信息类型
- Type BMPHeader
- Header As String '头信息
- Size As Long '文件大小
- Width As Long '宽
- Height As Long '高
- Bit As Long '图像位数
- End Type
- Sub Main()
- Dim FName As String
- Dim BMPHd As BMPHeader
- Dim StrBMP As String
- FName = ThisWorkbook.Path & "\4Bit.bmp"
- BMPHd = GetBmpHeader(FName)
- StrBMP = "文件大小:" & BMPHd.Size & vbCrLf & _
- "图像位数:" & BMPHd.Bit & vbCrLf & _
- "高:" & BMPHd.Height & vbCrLf & _
- "宽:" & BMPHd.Width
- MsgBox StrBMP
- End Sub
- '获取BMP头信息
- Function GetBmpHeader(ByVal FName As String) As BMPHeader
- Dim Temp() As Byte
- Dim FS As Integer
- FS = FreeFile
- '打开文件
- Open FName For Binary Access Read As #FS
- '文件头
- GetFS Temp, 2, FS, 1
- GetBmpHeader.Header = Chr(Temp(1)) & Chr(Temp(2))
- '文件大小
- GetFS Temp, 4, FS, 3
- GetBmpHeader.Size = GetNumber(Temp)
- '图像宽度
- GetFS Temp, 4, FS, 19
- GetBmpHeader.Width = GetNumber(Temp)
- '图像高度
- GetFS Temp, 4, FS, 23
- GetBmpHeader.Height = GetNumber(Temp)
- '图像位数
- GetFS Temp, 2, FS, 29
- GetBmpHeader.Bit = GetNumber(Temp)
- Close #FS
- End Function
- '数字计算
- Function GetNumber(ByVal Temp)
- Dim StrA As String
- Dim StrB As String
- For i = UBound(Temp) To LBound(Temp) Step -1
- StrB = Hex(Temp(i))
- If Len(StrB) = 1 Then StrB = 0 & StrB
- StrA = StrA & StrB
- Next
- GetNumber = WorksheetFunction.Hex2Dec(StrA)
- End Function
- '读取文件
- Sub GetFS(ByRef Temp() As Byte, ByVal Length As Long, ByVal FileNumber As Integer, Optional Pos)
- ReDim Temp(1 To Length)
- If IsMissing(Pos) Then
- Get FileNumber, , Temp
- Else
- Get FileNumber, Pos, Temp
- End If
- End Sub
如何获取BMP图片的基础信息.rar |
2楼 yjzstar |
学习了! |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一