Отражение изображения GrayScale в c или c++?

Я пытаюсь перевернуть изображение в оттенках серого по горизонтали. Указатель fp указывает на исходное изображение, а указатель fp1 создает перевернутое по горизонтали изображение. Программа выполняется правильно, но выходное изображение наихудшее...

    for( i =0 ;i<width ; i++)
     for(j=0; j <height; j++)
              idata[i][height - 1 -j] = ( (unsigned char)fgetc(fp));
    //flipping image          
for( i =0 ;i<width ; i++)
     for(j=0; j <height; j++)
              putc(idata[i][j] , fp1);                

нет проблем с копией заголовка изображения. я думаю, что проблема заключается в цикле for... помогите мне, пожалуйста


person Meluha    schedule 08.10.2012    source источник


Ответы (1)


Вы уверены, что не путаете ширину и высоту? Код, кажется, предполагает, что данные считываются в порядке столбцов, когда они, скорее всего, находятся в порядке строк. Попробуйте перевернуть циклы for и размер для переворачивания, например:

for(j = 0; j < height; j++)
    for(i = 0; i < width; i++)
        idata[width - 1 - i][j] = ( (unsigned char)fgetc(fp));

//flipping image          

for(j = 0; j < height; j++)
    for(i = 0; i < width; i++)
        putc(idata[i][j] , fp1);
person digitalvision    schedule 08.10.2012