VC++ BMP 이미지 작성 및 저장
2272 단어 Windows
pData , 。
char szFileName[32];
time_t ltime;
struct tm* pnow;
HANDLE hFile;
BYTE *pData = NULL;
int i, j, n;
BITMAPFILEHEADER bmfHdr;
BITMAPINFOHEADER bi;
DWORD dwBytesWrite;
int width, height;
BYTE qrData[MAX_MODULESIZE][MAX_MODULESIZE];
//
width = height = 100;
if ( width <= 0 || height <= 0 )
return;
// allocate memory for data area
pData = (BYTE*)malloc(width * height * 3);
if ( pData == NULL )
return;
// generate random data
//
srand((unsigned)time(NULL));
for ( i = 0; i < (int)(width * height * 3); i++)
{
pData[i] = 255;
}
//initialize the structures
RtlZeroMemory(&bmfHdr, sizeof(bmfHdr));
RtlZeroMemory(&bi, sizeof(bi));
// fill the necessary struct fields of the BITMAPFILEHEADER
bmfHdr.bfType = 0x4d42; // "BM"
bmfHdr.bfSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + width * height * 3;
bmfHdr.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
// fill the necessary struct fields of the BITMAPINFOHEADER
bi.biSize = sizeof(bi);
bi.biBitCount = 24;
bi.biHeight = height;
bi.biWidth = width;
bi.biCompression = BI_RGB;
bi.biPlanes = 1;
/* according current date and time to generate file name, saved in c:\ */
time(tm_year, pnow->tm_mon, pnow->tm_mday,
pnow->tm_hour, pnow->tm_min, pnow->tm_sec);
// create the bmp file
hFile = CreateFile(szFileName, GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if ( hFile == INVALID_HANDLE_VALUE )
{
free(pData);
return;
}
// write the BITMAPFILEHEADER
WriteFile(hFile, &bmfHdr, sizeof(BITMAPFILEHEADER), &dwBytesWrite, NULL);
// write the BITMAPINFOHEADER
WriteFile(hFile, &bi, sizeof(BITMAPINFOHEADER), &dwBytesWrite, NULL);
// write the bmp data
WriteFile(hFile, pData, width * height * 3, &dwBytesWrite, NULL);
// release resources
CloseHandle(hFile);
free(pData);
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[WinIoT/라즈파이] VS2019로 만든 UWP의 sln을 라즈파이 3+WinIoTCore로 원격 디버깅을 할 수 없을 때의 대처2021년 1월 시점에서 라즈파이 3에 WindowsIoTCore를 넣고 VisualStudio2019에서 UWP 앱을 새로 만들고 디버깅하려고 했는데 잘 디버깅할 수 없었다. 구체적으로는, 「리모트 디버거에 접속할...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.