gpt4 book ai didi

c - 在 C 中旋转 2D PGM 图像阵列

转载 作者:太空宇宙 更新时间:2023-11-04 00:07:25 25 4
gpt4 key购买 nike

我正在做一个家庭作业项目,旋转一个简单的二维数组,其中包含 PGM 文件的 RGB 值。

我在这些论坛上阅读了很多关于如何在 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() 时,我才会得到奇怪的结果。

最佳答案

malloc 语句之后尝试 memcpy(new_img, old_img, sizeof(PGMImage) 怎么样?也许除了 width 和 height 之外的一些其他属性没有初始化。而且,如果 data 变量是一个指针,你是否为 new_img 对象分配了一 block 内存用于 data

关于c - 在 C 中旋转 2D PGM 图像阵列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17761259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com