帮我写一个简易的c语言输出图片的函数
时间: 2023-06-10 07:04:19 浏览: 93
好的,以下是一个简单的C语言输出图片的函数:
```c
#include <stdio.h>
void outputImage(char *imageData, int width, int height) {
FILE *fp = fopen("output.bmp", "wb");
// bmp文件头部信息
char bmpFileHeader[54] = {
0x42, 0x4d, 0x36, 0x00, 0x0c, 0x00, 0x00, 0x00,
0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00,
0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00,
0x00, 0x00, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0xc4, 0x0e, 0x00, 0x00, 0xc4, 0x0e, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// bmp位图数据信息
int dataSize = width * height * 3;
char bmpData[dataSize];
for (int i = 0; i < dataSize; i += 3) {
bmpData[i] = imageData[i + 2];
bmpData[i + 1] = imageData[i + 1];
bmpData[i + 2] = imageData[i];
}
// 将位图数据反向存储
for (int i = 0; i < dataSize; i += 3) {
char temp = bmpData[i];
bmpData[i] = bmpData[i + 2];
bmpData[i + 2] = temp;
}
// 更新bmp文件头部信息中的图像宽、高和数据大小
bmpFileHeader[18] = width & 0xff;
bmpFileHeader[19] = (width >> 8) & 0xff;
bmpFileHeader[20] = (width >> 16) & 0xff;
bmpFileHeader[21] = (width >> 24) & 0xff;
bmpFileHeader[22] = height & 0xff;
bmpFileHeader[23] = (height >> 8) & 0xff;
bmpFileHeader[24] = (height >> 16) & 0xff;
bmpFileHeader[25] = (height >> 24) & 0xff;
bmpFileHeader[34] = dataSize & 0xff;
bmpFileHeader[35] = (dataSize >> 8) & 0xff;
bmpFileHeader[36] = (dataSize >> 16) & 0xff;
bmpFileHeader[37] = (dataSize >> 24) & 0xff;
// 写入bmp文件头部信息和位图数据信息
fwrite(bmpFileHeader, 1, 54, fp);
fwrite(bmpData, 1, dataSize, fp);
// 关闭文件指针
fclose(fp);
}
```
这个函数接受3个参数:一个指向图片数据的指针,图片的宽度和高度。它会将输入的图片数据保存为一个BMP文件,并存储在程序所在目录下的output.bmp文件中。请注意,此代码仅支持24位像素的BMP文件。