用于加载位图的C代码

时间:2009-11-03 16:52:02

标签: c image-processing bitmap bmp

有没有人知道一个好的C样本加载位图并处理所有情况:rle,b / w位图等等?

代码应该是跨平台的。

感谢。

7 个答案:

答案 0 :(得分:5)

我建议使用像SDL image

这样的库

答案 1 :(得分:2)

如果您正在寻找一个最小的bmp加载器,这个链接将为您提供所有您需要了解的BMP格式,数据结构和示例代码,而无需加载任何库依赖:

http://paulbourke.net/dataformats/bmp/

它还包含用于在开放式gl纹理中查看加载的BMP的代码,因此几乎所有您需要的...

答案 2 :(得分:1)

Chris Backhouse制作了一个功能强大的小型BMP加载器(着眼于将它们用作OpenGL纹理)。它是C ++,而不是C,他承认它不是跨平台的。但是,它很小且易于理解,所以我想我会在这里添加链接:

http://users.ox.ac.uk/~orie1330/bmploader.html

答案 3 :(得分:1)

您需要一些外部库来执行此操作(我建议ImageMagick)。 ImageMagick网站还包括文档和示例。

答案 4 :(得分:1)

查看英特尔开发的OpenCV库。

答案 5 :(得分:0)

如果您与BMP文件格式绑定,那么自己查看标题并获取像素非常简单。 See this google search。其中一个更有趣的比赛是here。最直观的部分是每行像素都是4字节对齐的。另外,请注意压缩的BMP ......(我的经验是许多第三方工具在压缩BMP方面遇到问题,因此您遇到的某些库也可能会......)

如果您不依赖于BMP文件格式,我建议使用libpng。 manual提供了一些非常清晰的示例代码。

答案 6 :(得分:0)

正如其他人所说,你可能想要使用像SDL这样的外部库。如果你想学习一些东西并自己动手做,请参阅我对这个非常相似的问题的答案:Getting RGB values for each pixel from a 24bpp Bitmap for conversion to GBA format in C你会找到打印出每个像素的C代码,并查看关于bmp文件的维基百科页面,因为它非常好。