读取bmp文件并在C中反转它

时间:2012-10-21 16:54:55

标签: c binaryfiles

我有一个分配处理将bmp文件读入内存,反转像素,然后将反转的图像保存到新文件。从这个描述看起来相当容易,但我不认为我的教授在解释这样做的必要步骤方面做得很好。他告诉我们关于fread和fwrite的内容,但还有更多。任何人都可以解释这个问题的过程(我不想直接回答只是一个解释)。

以下是问题说明的链接:https://engineering.purdue.edu/OOSD/F2012/Exercises/ex5.html

提前感谢您提供任何帮助。 注意:我实际上已经研究过这个问题,但由于我对这些信息没有良好的信誉,所以它并不完全"点击"。

我想我现在被困住的部分是:

    /* The input argument is the source file pointer. The function will first construct a BMP_Image image by allocating memory to it.
 * Then the function read the header from source image to the image's header.
 * Compute data size, width, height, and bytes_per_pixel of the image and stores them as image's attributes.
 * Finally, allocate menory for image's data according to the image size.
 * Return image;
*/
BMP_Image* CreateBMPImage(FILE* fptr)
{

  //Allocate memory for BMP_Image*;

  //Read the first 54 bytes of the source into the header

  //Compute data size, width, height, and bytes per pixel;

  //Allocate memory for image data
}

BMP_Image结构如下所示:

typedef struct {
    BMP_Header header;
    int data_size;
    int width;
    int height;
    int bytes_per_pixel; // This amount should be equals to number of bits/8
    char *data;
} BMP_Image;

1 个答案:

答案 0 :(得分:0)

阅读BMP文件格式(http://en.wikipedia.org/wiki/BMP_file_format),特别是pixal存储详细信息。它们存储在行中。以字节读取它们并使用位运算符,可能是uint8_t :)因为它是一个赋值,你应该自己编写代码。至少试试。