3

私は壊れた画像を取得し続けます(紙の赤い「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'を開けませんでした:そのようなファイルまたはディレクトリはありません」と表示されます。実行可能ファイルがあるフォルダーにありますか?とにかく、私が完全なパスを入れても、それは見つかりません

4

3 に答える 3

2

(一部のマシンで)同じ問題が発生した後、最新バージョンのGTK+を使用してWindows用のアプリケーションをコンパイルしました。GTK +の古いバージョン、正確にはgdk-pixbufでは、各画像読み込みプラグインは、読み込み可能な場合にファイル形式を識別するための一連の魔法のパターンを提供していました。しかし、glibはファイルを識別するためのAPIを取得しました。代わりにこれを使用するようにgdk-pixbufが更新されました。Windowsでは、glibはファイルの識別をシステムに依存していますが、これは失敗することがよくあります。GTK +はそれがどんな種類のファイルであるかを知りません、そしてそれのために利用可能なローダーがないと仮定します。ただし、これにより、「利用可能なローダーがありません」または少なくとも「イメージをロードできませんでした」という行にエラーメッセージが生成されます。しかし、多分それはあなたが得るものであり、あなたは全体の道を供給しますか?

ファイルの種類を自分で識別し(PCManFMのコードを使用)、 gdk_pixbuf_loader_new_with_mime_type()を使用して明示的に指定された種類の画像を読み込むことで 、問題を解決しました。少し面倒ですが、それで仕事は終わりました。

于 2010-07-18T21:44:43.183 に答える
0

GdkPixbufイメージローダーモジュールがあるかどうかを確認します。通常、それらはlib / gtk-2.0 / 2.10.0 /loaders/ディレクトリにあります。サポートされている画像形式ごとに1つずつ、いくつかの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);

より多くのエラー情報を取得できるようにします。

于 2010-01-05T17:25:04.643 に答える
0

Glib / Gtkは非常に冗長で、stdout / stderrにエラーがありますが、そこには何もありませんか?「strace-eopen」の下でプログラムを実行して、開こうとしているファイルを確認しますか?画像が存在し、プロセスで読み取り可能であることを絶対に確信していますか?

于 2010-01-05T21:10:52.727 に答える