LEADTOOLS ナレッジベース

カラー/グレー/1ビット画像を判断するには?

ネイティブ関数では、L_IsGrayScaleBitmap関数でグレースケール画像かカラー画像かを判断できます。
1ビット画像(白黒)かどうかを判断するには、L_FileInfo関数で画像情報を取得し、BitsPerPixelの値で判断します。1であれば1ビット画像です。

判断手順は以下です。

  1. L_FileInfo関数のBitsPerPixelが1ビットかどうかで1ビット画像を判定する。
  2. L_IsGrayScaleBitmap関数でグレースケールかカラー画像かを判定する。
  3. 上記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 コメント

記事コメントは受け付けていません。