CS50 - PSET4 - RESIZE - нужен совет без решения - PullRequest
0 голосов
/ 07 октября 2019

Итак, я хрустнул головой до н.э. печально известного назначения 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;

Мой не очень хороший результат с измененным размером

...