24 비트 색상을 사용하여 비트 맵 파일을 만드는 프로그램을 만들고 있습니다.비트 맵 픽셀 배열 채우기
3 단계로 파일을 쓰고 있는데, 먼저 FileHeader를 작성한 다음 InfoHeader를 작성한 다음 픽셀 데이터를 작성합니다. 각 행이 단어 경계에서 끝나도록 픽셀 데이터를 채우는 데 문제가 있습니다.
아래 코드는 가끔인데 while 회선이없는 경우에만 사용됩니다 (줄 끝에 패딩이 추가됨). 예를 들어 12x12 픽셀 이미지의 경우 24x24 크기로 조정할 수 있지만 10x10 크기로 조정할 수는 없습니다 (파일이 손상됨). 아래 패딩 코드를 삽입하면 이미지가 왜곡되어 가끔 손상됩니다.
나는 무엇이 잘못 될지 알 수 없습니다. 아래의 코드는 단어 경계에 도달 할 때까지 각 줄의 끝에 패딩을 추가하고 다음 줄을 시작해야합니다.
fwrite(&fh, 1, sizeof(FILEHEADER), n_img);
fwrite(&ih, 1, sizeof(INFOHEADER), n_img);
int i, j;
uint8_t pad = 0;
for (i = height-1; i >= 0; i--) {
for (j = 0; j < width; j++)
fwrite(n_pix+(i*width)+j, 1, sizeof(IMAGE), n_img);
while(ftell(n_img)%4 != 0)
fwrite(&pad, 1, 1, n_img);
}
그래서 픽셀의 사각형으로 만들지 않고 단어 경계에서 각 행을 완성 하시겠습니까? – shrm