我正在制作一个在 C 中创建位图文件的程序。它使用 24 位颜色。
我分三个阶段编写文件,我首先编写 FileHeader,然后是 InfoHeader,然后是 Pixel Data。我在填充像素数据时遇到问题,因此每一行都在一个字边界上完成。
下面的代码有时可以工作,但只有没有 while 循环(它将填充添加到行尾)。例如,对于 12x12px 的图像,我可以将其缩放到 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);
}