已经实现生成BMP,怎么改成生成PNG数据形式????
生成BMP数据格式 如下: 怎么能改成生成PNG数据的形式那
Buffer:截屏后的内存数据指针
int height,int width 为此buffer图片的宽高
bool _CreateBMP(BYTE* Buffer,int height,int width,int& newBufferSize)
{
int nBitPerPixel = 32;
int bufferSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + height * width * nBitPerPixel/8;
newBufferSize = bufferSize;
BYTE* NewBuffer = new BYTE[bufferSize];
BYTE* temp = NewBuffer;
BITMAPFILEHEADER* pBMPHeader = (BITMAPFILEHEADER*)temp;
pBMPHeader->bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
pBMPHeader->bfReserved1 = 0;
pBMPHeader->bfReserved2 = 0;
pBMPHeader->bfSize = bufferSize;
pBMPHeader->bfType = 0x4d42;
temp += sizeof(BITMAPFILEHEADER);
BITMAPINFOHEADER* pInfoHeader = (BITMAPINFOHEADER*)temp;
pInfoHeader->biBitCount = nBitPerPixel;
pInfoHeader->biClrImportant = 0;
pInfoHeader->biClrUsed = 0;
pInfoHeader->biCompression = BI_RGB;
pInfoHeader->biHeight = height;
pInfoHeader->biWidth = width;
pInfoHeader->biPlanes = 1;
pInfoHeader->biSize = sizeof(BITMAPINFOHEADER);
pInfoHeader->biSizeImage = 0;
pInfoHeader->biXPelsPerMeter = 0;
pInfoHeader->biYPelsPerMeter = 0;
temp += sizeof(BITMAPINFOHEADER);
for (int i = height; i > 0 ; --i)
{
int nPass = (i - 1) * width;
for (int j = 0; j < width ; ++j)
{
BYTE* begin = CKTexBuffer;
begin += (nPass + j)*4;
*((DWORD*)temp) = *((DWORD*)begin);
temp += (nBitPerPixel/8);
}
}
return true;
}