如何用C语言创建位图?

4

我想知道如何在C语言中导入和导出位图。基本上,我不知道该从哪里开始。


从零开始创建位图还是通过库创建位图? - Brian
你应该学习BITMAP文件的结构,然后创建一个位图并不难。当你填充文件头后,它就像玩比特一样简单。 - StevenWang
7个回答

2
内存中的位图类似于这样:
struct Image {
    int width;
    int height;
    char *data;    // 1 byte per channel & only 1 channel == grayscale
}

struct Image theImage;
theImage.width = 100;
theImage.height = 100;
theImage.data = malloc(sizeof(char) * theImage.width * theImage.height);

关于导入和导出,有一些非常简单的文件格式,比如BMP。对于更复杂的格式,最好使用现有的库。
大多数框架已经为最常见的文件格式提供了加载/保存方法。如果您正在寻找一个轻量级的库,可以看看SDL

2

你有没有看过ImageMagick的C API包装器,MagickWand?如果你想查阅,这里是文档。


1

我喜欢使用SDL和虚拟驱动程序。您可以像在屏幕上一样绘制到内存缓冲区,然后使用SDL_image或类似工具将其保存为PNG或其他格式。

另一个流行的库是GD


1
简单的答案是使用适当的库。哪个库是适当的将取决于您使用的平台。在GUI平台上,GUI API / Framework将包括这些设施。

1

我喜欢netpbm/pbmplus工具,虽然我通常喜欢使用命令行;API很高效,但使用起来不太有趣。

这个学期我编写了大量软件,供初学者使用以操纵图像;你可能想要查看Tufts课程机器结构和汇编语言编程的作业和支持软件。


最后一个链接需要用户名和密码吗? - Krista K

0

“位图”这个术语有点泛指,除非你特别指的是Windows BMP

我建议在你的平台上使用一个图像处理库(比如gd)。一个好的图形库有各种格式的图像输入和输出例程。


0

我看了一下那本100页的API手册,我不确定这是否对于初学者来说是一个好的起点。 - Norman Ramsey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接