アクセスで使用できる画像はJPEG、GIF等ありますが、これにはグラフィックフィルターが必要です。
ビットマップファイルはWindowsが標準でサポートしている画像形式でアクセスでもフィルターなしで使用できます。
基本的に無圧縮の為、ファイルサイズが大きく写真などの大きな画像は表示に時間が掛かります。
■ 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)の順で、
この画素は下から上の行へ, 行は 左から右の順で並んでいます。
つまり表示される画像と上下逆さまの状態で記録されていることになります。
回転や明度変更などの画像処理を行う場合、この画素データを並べ替えたり、増減することで可能になります。