这是我们大学要求我们完成的一个项目(在第三方上寻求帮助不受限制)我们必须构建一个 3D 场景,其中物体与纹理进行映射。
我被困在需要将 BMP 文件的数据加载到程序中的地方。我们必须使用系统中已经存在的库(禁止对其进行编码)。
我的要求是:使用 fedora(gnome 环境),是否存在一个预构建的库,其中存在加载 BMP 文件并返回指向有效负载的指针的函数?
编辑:我们禁止安装任何额外的库,该库必须是 Fedora 的预构建库。
查看 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 后获取原始像素,然后加载到表面中。
希望这有帮助。
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 上进行开发。使用此方法并链接到库。
我将重用以前的答案:
Sean Barrett 的 stb_image.c是一个独立的单文件公共域图像加载器,用于 JPEG、PNG、BMP、TGA、PSD、GIF、HDR 和 PIC 文件。