Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用C语言输出位图图像_C_Image - Fatal编程技术网

用C语言输出位图图像

用C语言输出位图图像,c,image,C,Image,我正在做一个C语言的小项目,有一次,我需要将包含数组内容的图片写入一个文件。这将不得不在某个时刻在嵌入式系统上运行,因此不能选择其他库 到目前为止,我的代码对RGB有效(在修改版本中),但对8位灰度无效 这是迄今为止代码的精简版本: 由于我强烈怀疑页眉在某种程度上被破坏,我的问题归结为:对于8位灰度的BMP文件,什么是正确的页眉?如果您放弃BMP,而将图像作为PGM文件编写,代码会简单得多。这种格式的可移植性更高,并且易于在代码中使用。两种格式都是未压缩的,因此数据速率大致相同。您唯一会失去的是

我正在做一个C语言的小项目,有一次,我需要将包含数组内容的图片写入一个文件。这将不得不在某个时刻在嵌入式系统上运行,因此不能选择其他库

到目前为止,我的代码对RGB有效(在修改版本中),但对8位灰度无效

这是迄今为止代码的精简版本:

由于我强烈怀疑页眉在某种程度上被破坏,我的问题归结为:对于8位灰度的BMP文件,什么是正确的页眉?

如果您放弃BMP,而将图像作为PGM文件编写,代码会简单得多。这种格式的可移植性更高,并且易于在代码中使用。两种格式都是未压缩的,因此数据速率大致相同。您唯一会失去的是在Windows系统上以本机方式查看图像的能力——这是否重要取决于您的需求

这里有一些

编辑


至少,如果您使用PGM破碎BMP写入图像,您可以使用将PGM可靠地转换为工作BMP。然后使用二进制差异工具比较工作和损坏的BMP图像的标题,如果需要,修复BMP书写器。

我知道你说没有库,但有一个很好的资源,我在需要BMP资料时总是使用,这在过去对我很有用。它是C++的,但是如果你没有得到另一个答案,你可以逆向设计它,看看你是否能发现一个问题:我在我的嵌入式应用程序中使用PPM/PGM图像。Gimp和IrfanView可以显示它们。同样,ImageMagick convert可以将它们转换为png/jpg/bmp/无论什么,如果需要PGM似乎更容易,我会查看它。谢谢