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;
}
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