자기개발/C++

C++ - 이미지 생성, 주소값으로 전달 후 저장

pi92 2021. 9. 17. 09:10
#define _AFXDLL 
#include <afxwin.h>
#include <atlimage.h>

int  main(void)
{
	int w = 50;
	int h = 30;
	LPBYTE pBits = nullptr;
	pBits = new BYTE[w * h];

	for (int i = 0; i < h; i++)
	{
		for (int j = 0; j < w; j++)
		{
			pBits[i*w + j] = j;
		}
	}

	CImage image;
	image.Create(w,h,8);
	RGBQUAD rgbQuad[256];
	for (int i = 0; i < 256; i++) {
		rgbQuad[i] = { BYTE(i),BYTE(i),BYTE(i),0 };
	}
	image.SetColorTable(0, 255, rgbQuad);


	LPBYTE m_pBits = (LPBYTE)image.GetBits();
	for (int i = 0; i < h; i++) {
		LPBYTE pRow = m_pBits + (i*image.GetPitch());
		memcpy(pRow, pBits + (i*w), w);
	}

	image.Save(_T("temp1.bmp"));
	image.Destroy();

	delete[] pBits;
	pBits = nullptr;


	_CrtDumpMemoryLeaks();

	return 0;
}