0

这是我们大学要求我们完成的一个项目(在第三方上寻求帮助不受限制)我们必须构建一个 3D 场景,其中物体与纹理进行映射。

我被困在需要将 BMP 文件的数据加载到程序中的地方。我们必须使用系统中已经存在的库(禁止对其进行编码)。

我的要求是:使用 fedora(gnome 环境),是否存在一个预构建的库,其中存在加载 BMP 文件并返回指向有效负载的指针的函数?

编辑:我们禁止安装任何额外的库,该库必须是 Fedora 的预构建库。

4

3 回答 3

3

查看 GDK 库和函数 gdk_pixbuf_new_from_file。正如您在 API 中看到的,您可以使用:

GdkPixbuf *bmp_pixbuf;
GError *error = NULL;
bmp_pixbuf = gdk_pixbuf_new_from_file ("/tmp/myfile.bmp", &error);
if (bmp_pixbuf == NULL) {
    /* Error codes are GDK_PIXBUF_ERROR and G_FILE_ERROR */
}

首先使用以下方法检查 GDK 中的 BMP 支持非常重要:

$ gdk-pixbuf-query-loaders-64 | grep bmp

你需要一个像 libpixbufloader-bmp.so 这样的库。

我不知道您使用什么库来创建 3D 场景,但是您可以在使用gdk_pixbuf_get_pixels加载 pixbuf 后获取原始像素,然后加载到表面中。

希望这有帮助。

于 2012-10-20T21:47:38.977 回答
0

freeimage 是具有上传 bmp 图像的方法的包名。从 freeimage 项目页面的在线文档中,我可以看到 API:

DLL_API FIBITMAP *DLL_CALLCONV FreeImage_Load(FREE_IMAGE_FORMAT fif, const char
*filename, int flags FI_DEFAULT(0));

你可以

yum install freeimage-devel

在 Fedora 上进行开发。使用此方法并链接到库。

于 2012-10-20T11:32:29.937 回答
0

我将重用以前的答案:

Sean Barrett 的 stb_image.c是一个独立的单文件公共域图像加载器,用于 JPEG、PNG、BMP、TGA、PSD、GIF、HDR 和 PIC 文件。

于 2012-10-20T21:51:26.117 回答