忍者ブログ
NINJA
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

BMPで保存する。

DIBコード:file.visualstudio05.blog.shinobi.jp/SaveDIB.zip

BOOL xxxxxx::SaveBMPFile( CString FileName, BITMAP sBitmap, BYTE* pData )
{
    CImage    img;
    //BYTE*    pImg;
    //DWORD    dwImgSize;

    int iDiff = 0;

    // DIB作成
    static BITMAPINFO bmpInfo;

    if( sBitmap.bmWidth * 3 % 4 ){
        iDiff = sBitmap.bmWidth * 3 + ( 4 - sBitmap.bmWidth * 3 % 4 );
    }
    else {
        iDiff = sBitmap.bmWidth * 3;
    }

    BYTE*    pBuff;
    int        iBuffSize = iDiff * sBitmap.bmHeight;
   
    if( !(pBuff = (BYTE*)calloc( iBuffSize + 1, sizeof(BYTE) ))){
        // メモリの確保を失敗
        return FALSE;
    }

    bmpInfo.bmiHeader.biSize        = sizeof( BITMAPINFOHEADER );
    bmpInfo.bmiHeader.biWidth        = sBitmap.bmWidth;
    bmpInfo.bmiHeader.biHeight        = sBitmap.bmHeight;
    bmpInfo.bmiHeader.biPlanes        = 1;
    bmpInfo.bmiHeader.biBitCount    = 24;
    bmpInfo.bmiHeader.biCompression    = BI_RGB;

    int n = 0;
    int j = 0;
    int iCnt = 0;
    for( int i = sBitmap.bmHeight - 1; i >= 0; i-- ){
        j = i * sBitmap.bmWidth * 3;
        for( int m = 0; m < sBitmap.bmWidth; m++ ){
           
            pBuff[ n + 0 ] = pData[ j + 0 ];
            pBuff[ n + 1 ] = pData[ j + 1 ];
            pBuff[ n + 2 ] = pData[ j + 2 ];

            n += 3;
            j += 3;
        }
        iCnt++;
        n = iCnt * iDiff;

    }

    SaveDIB( this->CStringToLptstr( FileName) , pBuff, &bmpInfo );

    free( pBuff );

    return TRUE;
}

PR
カレンダー
04 2025/05 06
S M T W T F S
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
フリーエリア
最新CM
最新TB
プロフィール
HN:
No Name Ninja
性別:
非公開
バーコード
ブログ内検索
アーカイブ
P R
Powered by ニンジャブログ  Designed by ゆきぱんだ
Copyright (c) Visual Studio C++のお勉強 All Rights Reserved
忍者ブログ / [PR]