[英]Rotating a 2D PGM Image Array in C
我正在做一個家庭作業項目,旋轉一個簡單的2D數組,該數組保存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()
,我才能得到時髦的結果。
怎么樣在malloc
語句后嘗試memcpy(new_img, old_img, sizeof(PGMImage)
。也許除了寬度和高度之外還沒有初始化其他一些屬性。而且,如果data
變量是一個指針,您是否為data
分配了一塊內存為new_img對象?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.