簡體   English   中英

在C中旋轉2D PGM圖像陣列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM