Итак, я хрустнул головой до н.э. печально известного назначения Resize от CS50. Для тех, кто этого не знает: мне нужно написать программу, которая изменяет размер файла bmp на n и сохраняет его в новом файле bmp. Изменение размера прошло успешно. Но я продолжаю получать странные цвета. Это означает, что мои заголовки работают, но что-то не так, когда я копирую пиксели. Может кто-нибудь помочь мне, не испортив решение?
Я так расстроен. : (
RGBTRIPLE triple;
RGBTRIPLE array[n];
// iterate over infile's scanlines
for (int i = 0, biHeight = abs(original_bi.biHeight); i < biHeight; i++)
{
// iterate over pixels in scanline
for (int j = 0; j < original_bi.biWidth; j++)
{
// read RGB triple from infile
fread(&triple, sizeof(RGBTRIPLE), 1, inptr);
// copy values triple into an array
for (int k = 0; k < n; k++)
{
array[k] = triple;
}
}
// copy array to ouptr
for (int l = 0; l < n; l++)
{
// write RGB triple to outfile
fwrite(&array, sizeof(array), n, outptr);
// add padding
for (int m = 0; m < padding; m++)
{
fputc(0x00, outptr);
}
}
// skip over padding original file, if any
fseek(inptr, original_padding, SEEK_CUR);
}
// close infile
fclose(inptr);
// close outfile
fclose(outptr);
// success
return 0;
Мой не очень хороший результат с измененным размером