我不断得到一张破损的图片(一张纸上的红色'X',它甚至没有开始加载我想要的那个,我不知道这是否足够清晰)并且不知道为什么,这里是我试过的:
image = gtk_image_new_from_file("abc.png");
gtk_container_add (GTK_CONTAINER (window), image);
gtk_widget_show (image);
gtk_widget_show (window);`
我是GUI编程的新手,所以请你好!哈哈
我忘了说这是在windows下
UPDATE:注意到错误是在“gdk_pixbuf_new_from_file”中它返回错误值,还不能解决问题
如果我运行调试器,它会说“加载文件时出错:#4无法打开文件'abc.jpeg':没有这样的文件或目录”,它应该在可执行文件所在的文件夹中?无论如何,如果我把完整的路径找不到它
答案 0 :(得分:2)
我遇到了同样的问题(在某些机器上)然后我使用最新版本的GTK +为Windows编译了一个应用程序。在旧版本的GTK +或gdk-pixbuf中,每个图像加载插件都提供了一组魔术模式来识别文件格式(如果可以加载)。但是后来glib得到了一个用于识别文件的API,gdk-pixbuf已更新为使用它。在Windows上,glib依赖于系统来识别文件,但是它经常会失败。 GTK +没有找到它是什么类型的文件,并假设没有可用的加载器。但是,这会在“无可用加载程序”或至少“无法加载图像”的行中生成错误消息。但也许这就是你得到的,然后你提供了整条路径?
我通过自己识别文件类型(使用PCManFM中的代码)并使用 gdk_pixbuf_loader_new_with_mime_type()加载具有明确指定类型的图像来解决问题。有点麻烦,但它完成了工作。
答案 1 :(得分:0)
检查您是否有GdkPixbuf图像加载器模块。通常它们位于lib / gtk-2.0 / 2.10.0 / loaders /目录中。您应该看到一些libpixbufloader-bmp.dll文件,每个支持的图像格式一个。
您还可以尝试使用以下方式加载图片:
GError *error = NULL;
GdkPixbuf *pix = gdk_pixbuf_new_from_file ("abc.png", &error);
if (pix == NULL) {
g_printerr ("Error loading file: #%d %s\n", error->code, error->message);
g_error_free (error);
exit (1);
}
GtkWidget *widget = gtk_image_new_from_pixbuf (pix);
以便您可以获得更多错误信息。
答案 2 :(得分:0)
Glib / Gtk对stdout / stderr的错误非常冗长,那里什么都没有?运行“strace -eopen”下的程序,看看它试图打开哪些文件?您是否完全确定图像是否存在且可被过程读取?