2012-01-02 9 views
1

139 cols * 121 rows 이미지 맵을 표시하고 싶습니다.gtk에서 이미지 로딩을 가속화하십시오. IconView

(이차원 graph리스트의 이미지를 포함하는 개체를 포함

내가 같이, gtk.gdk.Pixbuf로 채우기 gtk.ListStoregtk.Iconview를 사용

(화상 사이즈 * 32 픽셀 32) 경로) 표시

pixbuf_passage = gtk.gdk.pixbuf_new_from_xpm_data(xpmdata) 
for row in graph : 
    for col in row : 
     pixbuf = gtk.gdk.pixbuf_new_from_file(col.img_base) 

     if col.passage : 
      pixbuf_passage.composite(pixbuf, 0, 0, pixbuf_passage.props.width, pixbuf_passage.props.height, 0, 0, 1.0, 1.0, gtk.gdk.INTERP_BILINEAR, 255) 

     self.grid.listStore.append([pixbuf, tooltip]) 

내 문제는 이미지 로딩 시간은 컴퓨터의 구성에 따라 상당히 오래 할 수 있다는 것입니다 :

(너무 깁니다) (가능) 4GB의 RAM을 가진 인텔 코어 i7에 대한
  • ~ 20 대 4GB의 RAM을 가진 AMD의 X2 4200+에 대한
  • ~ 160S

어떤 방법이 있나요 이미지로드 속도를 높이려면? 아마도 gtk.Iconview를 사용하는 것이 최적이 아닌 것일까 요?

감사

+1

시도해 볼 수있는 PyGTK FAQ에 [관련 토론]이 있습니다 (http://faq.pygtk.org/index.py?req=show&file=faq13.043.htp). 도움이되지 않는다면, 일종의 주문형 로딩을 구현할 수 있습니다 (IIRC Rhythmbox (또는 Banshee가이 작업을 수행 했습니까?)). 그러나 쉽지는 않다고 생각합니다. –

+0

어떤 GTK 버전을 사용하고 있습니까? 어떤 플랫폼에서? – liberforce

+0

@ liberforce : Linux (x64)에서는 2.24.0 버전의 PyGTK와 2.24.8 버전의 GTK를 사용하지만 Windows에도 동일한 효과가 있습니다. –

답변

1

PyGTK FAQ이에 대한 몇 가지 팁이있다. 가장 중요한 것은 많은 항목을 추가하는 동안 treeview/iconview를 일시 정지하고 모델을 임시 설정 해제해야한다는 것입니다.

treeview.freeze_child_notify() 
treeview.set_model(None) 

# Add rows to the model 
# ... 

treeview.set_model(model) 
treeview.thaw_child_notify() 

g_idle_add를 사용하는 트릭은 UI에 더 많은 응답을 추가하는 데 유용합니다.