【发布时间】:2010-12-25 00:25:30
【问题描述】:
我想知道如何在 C 中导入和导出位图。我基本上不知道从哪里开始。
【问题讨论】:
-
从头开始创建位图还是通过库创建位图?
-
你应该学习BITMAP文件的结构..然后创建一个位图就不难了,就像填充文件头后玩比特一样..
标签: c image-processing bitmap
我想知道如何在 C 中导入和导出位图。我基本上不知道从哪里开始。
【问题讨论】:
标签: c image-processing bitmap
内存中的位图如下所示:
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。
【讨论】:
您是否看过 ImageMagick 的 C API 包装器MagickWand? Here's 如果您想仔细阅读文档。
【讨论】:
简单的答案是使用适当的库。合适的库取决于您使用的平台。在 GUI 平台上,GUI API/框架将包括这些设施。
【讨论】:
我喜欢netpbm/pbmplus 工具,虽然我通常喜欢命令行; API 很高效,但使用起来并不有趣。
这学期我写了大量的软件供初学者用来处理图像;您可能想查看塔夫茨课程Machine Structure and Assembly-Language Programming 的家庭作业和支持软件。
【讨论】:
术语“位图”有点笼统,除非您特别指的是Windows BMP。
我建议在您的平台上使用图像处理库(例如 gd)。一个好的图形库具有对各种格式的图像进行输入和输出的例程。
【讨论】:
FreeImage 非常棒。我已经将它用于我自己的游戏开发工作,它支持大量格式。以下是支持的功能和格式列表 - http://freeimage.sourceforge.net/features.html
【讨论】: