ビットマップファイル(BMP)のサイズ取得 : Access

アクセスで使用できる画像はJPEG、GIF等ありますが、これにはグラフィックフィルターが必要です。

ビットマップファイルはWindowsが標準でサポートしている画像形式でアクセスでもフィルターなしで使用できます。
基本的に無圧縮の為、ファイルサイズが大きく写真などの大きな画像は表示に時間が掛かります。



BackHome BackTips Backメニュー

■ Access VBA 実行コード

Type BitmapFileHeader
    bfType(0 To 1) As Byte
    bfSize As Long
    bfReserved1 As Integer
    bfReserved2 As Integer
    bfOffBits As Long
End Type

'DIBのサイズとカラーフォーマットに関する情報の構造体
Type BitmapInfoHeader
    biSize As Long
    biWidth As Long
    biHeight As Long
    biPlanes As Integer
    biBitCount As Integer ' 1:モノクロ, 2:16色, 3:256色, 4:1670万色
    biCompression As Long
    biSizeimage As Long
    biXPelsPerMeter As Long
    biYPelsPerMeter As Long
    biClrUsed As Long
    biClrImportant As Long
End Type

'コマンドボタンクリックイベント
Private Sub コマンド0_Click()
    Dim tBmapFileHeader As BitmapFileHeader
    Dim tBmapInfoHeader As BitmapInfoHeader
    Dim sFina As String
    Dim sBitCount As String

    sFina = "c:\windows\バンブー.bmp"
'ビットマップファイルを開く
'Get #fileNum, recordNum, variable
'fileNum ファイル番号
'recordNum レコード番号 Binaryアクセスの場合は空欄
'variable 変数 配列やユーザ定義型の変数も使用可能
    Open sFina For Binary As #1
    Get #1, , tBmapFileHeader
    Get #1, , tBmapInfoHeader
    Close #1

    With tBmapInfoHeader
        Select Case .biBitCount
'白黒のビットマップ
            Case 1: sBitCount = "モノクロ"
'ビットマップの互いのピクセルは カラーテーブルへの4ビットのインデックスで表現されます。
            Case 2: sBitCount = "16色"
'画像のそれぞれの1バイトは一つのピクセルを表しています。
            Case 3: sBitCount = "256色"
'ビットマップは最大で16777216色を保持できます。画像ビットのそれぞれ3バイトが 青・緑・赤の順番でそれぞれ明度(intensity)を示しています。
            Case 4: sBitCount = "1670万色"
            Case Else: sBitCount = "不明"
        End Select
    End With
    Me!テキスト1 = "BMPファイル:" & sFina & vbCrLf
'幅、高さ、色数を表示します
    Me!テキスト1 = Me!テキスト1 & _
        "サイズ:" & tBmapInfoHeader.biWidth & "," & tBmapInfoHeader.biHeight & vbCrLf & _
        "色 数:" & sBitCount & vbCrLf
End Sub
<メモ>
Bitmapファイルの構造(Windows)

ファイルヘッダ:BITMAPFILEHEADER
情報ヘッダ:BITMAPINFOHEADER
パレットデータ:RGBQUAD
画像データ

■ファイルヘッダ:BITMAPFILEHEADER
bfType:ファイルタイプ
bfSize:ファイルサイズ
bfReserved1:予約領域1 常に0
bfReserved2:予約領域2 常に0
bfOffBits:ファイル先頭から画像データまでのオフセット

■情報ヘッダ:BITMAPINFOHEADER
biSize:情報ヘッダサイズ
biWidth:画像の幅[ピクセル]
biHeight:画像の高さ[ピクセル]
biPlanes:プレーン数 常に1
biBitCount:色ビット数[bit] 1,4,8,(16),24,32
biCompression:圧縮形式 0,1,2,3
biSizeImage:画像データサイズ
biXPixPerMeter:水平解像度
biYPixPerMeter:垂直解像度
biClrUsed:格納パレット数(使用色数)
biCirImportant:重要色数

■パレットデータ:RGBQUAD
rgbBlue:青 0~255
rgbGreen:緑 0~255
rgbRed:赤 0~255
rgbReserved:予約領域 常に0

24ビットカラーのBMPファイルには色情報が直接記録されています。
1画素あたり24 bit(3bytes)で構成され、Blue(8bit)・Green(8bit)・Red(8bit)の順で、
この画素は下から上の行へ, 行は 左から右の順で並んでいます。
つまり表示される画像と上下逆さまの状態で記録されていることになります。

回転や明度変更などの画像処理を行う場合、この画素データを並べ替えたり、増減することで可能になります。

BackHome BackTips Backメニュー

Copyright(C) FeedSoft