我正在做一个家庭作业项目来旋转一个简单的二维数组,该数组保存 PGM 文件的 RGB 值。
我已经在这些论坛中阅读了很多关于如何在 C 中执行此操作的帖子,并且我几乎已经可以使用它了。我的输出文件具有正确的尺寸并已旋转,但顶部和侧面有一个厚厚的黑色边框。我只是不知道我做错了什么。
任何帮助将不胜感激!
我修改了此处提供的代码以开始使用,这是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()