Я работаю над проектом домашней работы, чтобы повернуть простой 2D-массив, содержащий значения RGB для файла PGM.Вращение массива изображений 2D PGM в C
Я прочитал много сообщений на этих форумах о том, как это сделать на C, и я почти получил его работу. Мой выходной файл имеет правильные размеры и поворачивается, но вокруг верхней и боковой сторон имеется толстая черная рамка. Я просто не могу понять, что я делаю неправильно.
Любая помощь была бы принята с благодарностью!
Я изменил код представил here, чтобы начать работу, и это rotate90
функция Я работаю сейчас:
PGMImage* rotate90(PGMImage *old_img)
{
int x, y;
PGMImage *new_img = malloc(sizeof(PGMImage));
new_img->maxVal = old_img->maxVal;
new_img->width = old_img->height;
new_img->height = old_img->width;
for (x = 0; x < old_img->width; x++)
{
for (y = 0; y < old_img->height; y++)
{
new_img->data[old_img->height - 1 - y][x].r = old_img->data[x][y].r;
new_img->data[old_img->height - 1 - y][x].g = old_img->data[x][y].g;
new_img->data[old_img->height - 1 - y][x].b = old_img->data[x][y].b;
}
}
return new_img;
}
void main()
{
PGMImage* img = malloc(sizeof(PGMImage));
getPGMfile("columns.pgm", img);
save("columns_new.ppm", rotate90(img));
}
save()
и getPGMfile()
функции работают отлично самостоятельно.
Только когда я передаю результат своей rotate90()
функции save()
, я получаю напуганные результаты.
Вы выделяете пространство для массива '.data'? –
Спасибо за вопрос luser droog. Массив 'data' выделяется в 800 x 800 в типе' PGMImage' typedef (в файле заголовка). Я работаю только с изображениями макс. Размера 640 x 480. – deeprog