0
그레이 스케일 원시 파일의 픽셀을 bmp 형식으로 재배치하는 프로그램을 작성하려고합니다. 그러나 나는 내가 모르는 실수를 할 것이라고 생각한다. 누군가 다음 코드를 잘못 읽었습니까? 사양에 따르면 BMP 형식의 픽셀은 3 바이트로 구성됩니다. 원시 이미지 배열의 첫 번째 행은 bmp 픽셀 배열의 맨 아래 행에 배치되고, 두 번째 행은 두 번째 맨 아래 행에 배치됩니다. 그래서 나는 BMP 헤더에 대한 GUI 코드를 제외하고 같은 핵심 코드를 작성하고 하나그레이 스케일 원시 형식을 bmp 형식으로 변환
void MyClass_MakeBMP(void)
{
int i,j,k ;
/* m_uiWidth and m_uiHeight are rows and cols for the raw image, respectively. */
m_BMPheader.biWidth = m_uiWidth;
m_BMPheader.biHeight = m_uiHeight;
// raw format buffer -> 2d array.
// bmp format buffer -> 1d array.
// m_pcImgbuf is 1d array for a raw file.
// m_pcBMP is 2d array to be copied from m_pcImgbuf.
for(i = 0 ; i < m_uiHeight; i++)
{
k = -1; // index into m_pcImgbuf.
for(j = 0 ; j < m_uiWidth * 3; j++)
{
if(j % 3 == 0)
k++;
m_pcBMP[i * m_uiHeight + j] = m_pcImgbuf[(m_uiHeight - 1) - i][k];
}
}
}
은 또한, 나는 패딩 걱정하지 않는다,이 프로그램은 입력으로 취 할 수 있기 때문에, * 256 256, 128 * 128, 및 512 * 512 이미지. 미리 감사드립니다.
통찰력을 주셔서 감사합니다. – inherithandle