将bmp文件旋转为2d数组

时间:2017-10-18 05:10:36

标签: c multidimensional-array rotation bmp

我有一个bmp图像,我试图用c旋转180度。

这是我到目前为止所获得的代码,但由于某些原因它不会旋转图像(它对图像没有任何作用)。这里h是图片的高度,w是宽度。

int rotate(int h, int w)
{
    FILE *infile = fopen("in2.bmp", "rb"); 
    FILE *outfile = fopen("copy3.bmp", "wb");  

    char header[HEADER_SIZE]; 
    unsigned char pixels[h][w * 3];


    fread( header, 1 , HEADER_SIZE , infile);
    fread( pixels, 1 , h * w * 3 , infile);

    int r,c;


    for( r = 0; r < h; r++)
     {

         for ( c = 0; c < w * 3; c+=1) 
         {
            char temp = pixels[r][c];
            pixels[r][c] = pixels[h-r-1][(w*3-1)-c];
            pixels[h-r-1][(w*3-1)-c] = temp;



         }
    }

    fwrite( header, sizeof(char)  , HEADER_SIZE  ,  outfile);
    fwrite( pixels, sizeof(char)  , h * w * 3  ,  outfile);

    fclose(infile);
    fclose(outfile);

    return 0;
}

谢谢!

0 个答案:

没有答案