#293 | ビットマップファイルの情報取得 | VBA | |
ビットマップファイル(.BMP)の画像情報を取得する方法です。 ビットマップファイルの情報は、そのファイルのヘッダー部に書き込まれています。ビットマップファイルをバイナリモードで開いて、1レコード目(構造体の長さ分)を読み込むことによってBITMAPFILEHEADER構造体に対応した情報を得ることができます。また、2レコード目を読み込むことによってBITMAPINFOHEADER構造体に対応した情報を得ることができます。前者の構造体にはファイルサイズなどの情報が格納されます。また後者の構造体には画像の幅や高さ、解像度など、ビットマップ特有の情報が格納されます。 次の例は、それらの機能を利用した「GetBMPSize」というオリジナル関数のサンプルです。この関数では、ビットマップファイルのパスを引数として指定することによって、いくつかの画像の情報を文字列として返します。 Private Type BITMAPFILEHEADER
bfType As Integer bfSize As Long bfReserved1 As Integer bfReserved2 As Integer bfOffBits As Long End Type Private Type BITMAPINFOHEADER biSize As Long biWidth As Long biHeight As Long biPlanes As Integer biBitCount As Integer biCompression As Long biSizeImage As Long biXPelsPerMeter As Long biYPelsPerMeter As Long biClrUsed As Long biClrImportant As Long End Type Public Function GetBMPSize(strFilePath As String) As String '概要 指定のビットマップファイルの情報を取得する '引数 strFilePath : ビットマップファイルのパス '返値 画像サイズ・ビット・ファイルサイズの文字列 Dim tBmpFileHeader As BITMAPFILEHEADER Dim tBmpInfoHeader As BITMAPINFOHEADER Dim lngFileNum As Long Dim strSize As String Dim strColor As String Dim strFileSize As String lngFileNum = FreeFile() Open strFilePath For Binary As #lngFileNum Get #lngFileNum, , tBmpFileHeader Get #lngFileNum, , tBmpInfoHeader Close #lngFileNum With tBmpInfoHeader strSize = .biWidth & "×" & .biHeight Select Case .biBitCount Case 1 strColor = "モノクロ" Case 4 strColor = "16色" Case 8 strColor = "256色" Case 24 strColor = "24ビット" End Select strFileSize = "(" & CStr(tBmpFileHeader.bfSize) & "Byte)" End With GetBMPSize = strSize & " " & strColor & strFileSize End Function 使用例: Debug.Print GetBMPSize("c:\windows\大草原の風.bmp")
Debug.Print GetBMPSize("c:\windows\フィッシング.bmp") Debug.Print GetBMPSize("c:\windows\珈琲カップ.bmp") |
|||
|
Copyright © T'sWare All rights reserved |