用vc++6.0把PNG格式的图片转成BMP图片该怎么转,求指教,如有示例代码更好!
int main()
{
Mat srcpng = imread("1.png");
imwrite("1.BMP", srcpng);
return 0
}
用opencv
解决这个问题最简单的方式是使用CImage,直接将图像数据中的透明部分替换为白色或其他颜色。
HBITMAP TransparentImage(HBITMAP hBitmap)
{
CImage Image;
Image.Attach(hBitmap);
int nPitch = Image.GetPitch( ) , nBPP = Image.GetBPP( );
LPBYTE lpBits = reinterpret_cast< LPBYTE>( Image.GetBits( ) );
for( int yPos = 0 ; yPos < Image.GetHeight( ) ; yPos ++ )
{
LPBYTE lpBytes = lpBits + ( yPos * nPitch );
PDWORD lpLines = reinterpret_cast< PDWORD >( lpBytes );
for( int xPos = 0 ; xPos < Image.GetWidth( ) ; xPos ++ )
{
if( nBPP == 32 && lpLines[ xPos ] >> 24 != 0x000000FF)
{
lpLines[ xPos ] |= 0xFFFFFFFF ;
}
}
}
return Image.Detach();
}