ネイティブ関数では、L_IsGrayScaleBitmap関数でグレースケール画像かカラー画像かを判断できます。
1ビット画像(白黒)かどうかを判断するには、L_FileInfo関数で画像情報を取得し、BitsPerPixelの値で判断します。1であれば1ビット画像です。
判断手順は以下です。
- L_FileInfo関数のBitsPerPixelが1ビットかどうかで1ビット画像を判定する。
- L_IsGrayScaleBitmap関数でグレースケールかカラー画像かを判定する。
- 上記1、2以外はカラー画像と判定する。
サンプルコード(C++)
L_TCHAR szMessage[1024]; /* Buffer */
L_INT nRet;
BITMAPHANDLE LeadBitmap;
FILEINFO FileInfo; /* FileInfo */
/* ファイル情報の取得 */
memset(&FileInfo, 0, sizeof(FILEINFO));
FileInfo.uStructSize = sizeof(FileInfo);
nRet = L_FileInfo(TEXT("test.tif"), &FileInfo, sizeof(FILEINFO), FILEINFO_TOTALPAGES, NULL);
/* ピクセル深度を維持したままビットマップをロードします。 */
nRet = L_LoadBitmap(TEXT("test.tif"), &LeadBitmap, sizeof(BITMAPHANDLE), 0, ORDER_BGR, NULL, NULL);
if(nRet == SUCCESS)
{
nRet = L_IsGrayScaleBitmap(&LeadBitmap);
/* カラー/グレー/1ビットを判断します。 */
if (FileInfo.BitsPerPixel==1)
{
MessageBox( NULL, TEXT("1ビット画像です。"), TEXT("カラー/グレー/1ビット判断"), MB_OK );
}
else if(nRet != 0)
{
MessageBox( NULL, TEXT("グレースケール画像です。"), TEXT("カラー/グレー/1ビット判断"), MB_OK );
}
else
{
MessageBox( NULL, TEXT("カラー画像です。"), TEXT("カラー/グレー/1ビット判断"), MB_OK );
}
}
0 コメント