我正在製作一個程序,用C創建一個位圖文件,它使用24位顏色。填充位圖像素數組
我正在寫3個階段的文件,我先寫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);
}
所以,你不打算把它做成一個像素的平方,而只是在字邊界上完成每一行? – shrm