Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
图像加载、C语言和GTK_C_Image_Gtk_Loading - Fatal编程技术网

图像加载、C语言和GTK

图像加载、C语言和GTK,c,image,gtk,loading,C,Image,Gtk,Loading,我不断得到一个损坏的图像(一张纸上的红色“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编程的新手,所以请友好一点!哈哈 我忘了说这是在窗户下

我不断得到一个损坏的图像(一张纸上的红色“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编程的新手,所以请友好一点!哈哈

我忘了说这是在窗户下面

更新:注意到错误在“gdk_pixbuf_new_from_file”中,它返回了错误值,还不能解决问题


如果我运行调试器,它会说“加载文件时出错:#4无法打开文件'abc.jpeg':没有这样的文件或目录”,它应该在可执行文件所在的文件夹中?无论如何,如果我放置完整路径,它也找不到它

请检查是否有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);

这样您就可以获得更多的错误信息。

Glib/Gtk对于stdout/stderr的错误非常详细,难道没有任何错误吗?在“strace-eopen”下运行程序,查看它试图打开的文件是什么?您是否绝对确定映像存在并且进程可读?

我也有同样的问题(在某些机器上),然后我使用最新版本的GTK+编译了一个Windows应用程序。在GTK+的旧版本中,确切地说是gdk pixbuf,每个图像加载插件都提供了一组神奇的模式来识别文件格式(如果可以加载)。但后来glib得到了一个用于识别文件的API,gdk pixbuf被更新为使用这个API。在Windows上,glib依赖于系统来识别文件,但这是它经常失败的地方。GTK+不知道它是什么类型的文件,并且假设没有可用于它的加载程序。但是,这会在“无可用加载程序”或至少“无法加载图像”行中生成错误消息。但也许这就是你得到的,然后你提供整条路


我通过自己识别文件类型(使用中的代码)并使用明确指定的类型加载图像来解决这个问题,使用gdk\u pixbuf\u loader\u new\u with_mime\u type()。有点麻烦,但它完成了任务。

你所说的破碎图像到底是什么意思?是否不清楚,或者是否未完全显示?我想您需要指定文件的完整路径我allready尝试过,但不起作用。是否可以尝试不同的图像格式?能否为我发布完整代码?“进程以状态1终止(0分钟,0秒)”一定是有某种错误使gdk_pixbuf_new_from_file返回NULL。谢谢,这是一个大学项目,但我已经完成了。我结束了在linux上的工作,在我第一次尝试时它就工作了,但是安装SO和所有必需的软件包有点困难,因为我以前从未使用过它。