我有一个任务是处理将 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;