2010-01-05 2 views
3

부러진 이미지가 계속 나타납니다 (용지에 빨간색 'X'가 나타납니다. 원하는 로딩을 시작하지 않습니다. 이것이 충분히 명확한 지 모르겠습니다). 이유를 모르겠다. 내가 시도한 것은 다음과 같다.이미지 로딩, C 언어 및 GTK

image = gtk_image_new_from_file("abc.png"); 
gtk_container_add (GTK_CONTAINER (window), image); 
gtk_widget_show (image); 
gtk_widget_show (window);` 

나는 GUI 프로그래밍의 초보자이다.

하하 난이 창에서

UPDATE라고 말할 것을 잊었다 : 오류가 "gdk_pixbuf_new_from_file는"그것은 나에게 오류 값을 반환에있는 것을 발견, 문제 내가 실행하면 아직

를 해결할 수 디버거에서 "파일로드 오류 : # 4 'abc.jpeg'파일을 열지 못했습니다 : 해당 파일이나 디렉토리가 없습니다. '라는 메시지가 나타나면 실행 파일이있는 폴더에 있어야합니까? 어쨌든 완전한 경로를 넣으면 찾을 수 없습니다.

+0

깨진 이미지의 의미는 무엇입니까? 명확하지 않습니까, 아니면 완전히 표시되지 않습니까? –

+0

파일의 전체 경로를 지정해야한다고 생각합니다. – qrdl

+0

나는 이미 그것을 시도했지만 작동하지 않습니다. – Machuk

답변

2

(일부 컴퓨터에서) 동일한 문제가 발생했다가 최근 버전의 GTK +를 사용하여 Windows 용 응용 프로그램을 컴파일했습니다. 이전 버전의 GTK + 또는 gdk-pixbuf에서 정확하게로드 할 수있는 경우 각 이미지로드 플러그인은 일련의 마법 패턴을 제공하여 파일 형식을 식별했습니다. 그러나 glib은 gdk-pixbuf 파일을 식별하기위한 API를 가지고 대신 이것을 사용하도록 업데이트되었습니다. Windows에서 glib은 파일을 식별하기 위해 시스템을 사용하지만이 경우에는 종종 실패합니다. GTK +는 그것이 어떤 종류의 파일인지 알지 못하며, 사용할 수있는 로더가 없다고 가정합니다. 그러나 "사용 가능한 로더가 없음"또는 적어도 "이미지를로드 할 수 없습니다"행에 오류 메시지가 생성됩니다. 하지만 어쩌면 그것이 당신이 얻은 것입니다.

gdk_pixbuf_loader_new_with_mime_type()를 사용 ( PCManFM의 코드를 사용하여) 파일 형식에게 자신을 식별하고 explicetly 지정된 유형의 이미지를로드하여 문제를 해결했다. 약간 성가시다. 그러나 그것은 일을 끝내었다.

+0

고마워요, 이건 대학 수능 이었어요.하지만 이미 끝냈습니다. 내가 리눅스에서 일하는 것을 끝냈다. 처음 시도한 것이었지만, 전에 사용하지 않았기 때문에 SO와 모든 필수 패키지를 설치하는 것이 다소 어려웠다. – Machuk

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); 

을 더 많은 오류 정보를 얻을 수 있도록.

+0

"프로세스가 상태 1 (0 분, 0 초)로 종료되었습니다."gdk_pixbuf_new_from_file이 NULL을 반환하도록하는 어떤 종류의 오류가 있어야합니다. – Machuk

0

Glib/Gtk는 stdout/stderr에 오류가있는 경우 매우 장황합니다. "strace -eopen"아래에서 프로그램을 실행하여 열려고하는 파일을 확인하십시오. 이미지가 존재하고 프로세스에서 읽을 수 있는지 절대적으로 확신합니까?