[問題] 撰寫"開啟檔案"功能時縮圖的問題
不好意思,小弟目前再用Qt寫一程式時,
因為XP系統的開啟檔案似乎沒辦法預設就是縮圖模式
如圖:http://ppt.cc/Nmm5
必須要從紅圈處改成縮圖才可以
所以必須要寫一個開檔功能應用在XP上 (老闆堅持用XP...)
目前已經做到可以在List上顯示該目錄下的所有檔案類型
如圖:http://ppt.cc/fWTL
但對於縮圖的實做上有些問題想請教
目前置作縮圖的方法是將目錄上的所有檔案都過濾,
只顯示屬於圖檔的部分,接著去讀取每一張圖,然後呼叫函式縮小
最後再放到List上,但這樣有一個問題是每前進一個目錄
我的程式都會Delay直到該目錄下所有圖片都縮完並顯示為止
如果圖片有20張,我程式大概會有2~3秒不能動
本來想說用執行緒的方式去實作,還沒縮完的圖檔都用系統預設的Icon
縮完一張圖片在更新一個ListItem,像這個樣子
http://ppt.cc/Mvpi
可是還沒去實作就又想到一個問題,就是當圖片過大時,
開檔並縮小的時間就越長,可是看了一下Win7的縮圖功能,卻都是神之快
不管我圖片在大,每當進入資料夾後,系統製作縮圖的速度真的超迅速
而且我程式在進行縮圖的過程中,程式記憶體會標很高,
甚至很容易出現"記憶體不足"的錯誤,
但看了一下系統管理員卻還有好幾G的記憶體可用,也滿莫名其妙的
所以又感覺自己的方向不對,想請教一下各位高手,
能否給小弟一點方向、建議或提示,該怎麼做才可以快速產生縮圖
還是說有辦法直接去讀取XP、win7系統中該圖片的thumbnail cache
或者XP有辦法調成預設開啟檔案就是縮圖模式ˇ_ˇ
謝謝各位
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.158.60.5
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1398776952.A.335.html
※ 編輯: googled (49.158.60.5), 04/29/2014 21:09:32
推
04/29 21:16, , 1F
04/29 21:16, 1F
→
04/29 21:17, , 2F
04/29 21:17, 2F
好的,感謝你的幫忙,我再來看看有沒有辦法跟Qt結合
→
04/29 21:23, , 3F
04/29 21:23, 3F
→
04/29 21:23, , 4F
04/29 21:23, 4F
我看了一下記憶體的變化,我進入到140m的照片資料夾後,讀取的記憶體卻高達1G多
還滿奇怪的,不過我程式確實就當掉了,看了一下工作管理員的記憶體
"可用"還有2G多,"未使用"只剩不到一百,然後"可用"慢慢的減少
"未使用"卻在慢慢的增加,我在想會有可能會是程式讀取圖片太快,
系統轉換記憶體太慢導致當掉的嗎?
對作業系統不是很熟ˇ_ˇ
推
04/29 21:32, , 5F
04/29 21:32, 5F
→
04/29 21:33, , 6F
04/29 21:33, 6F
→
04/29 21:33, , 7F
04/29 21:33, 7F
→
04/29 21:50, , 8F
04/29 21:50, 8F
剛剛立刻GOOGLE查QT使用SendMessage的方法測試了一下,
但卻FileDialog卻沒有反應,本身也沒學過WIN32,使用的方法也不知道對不對
#include <windows.h>
QFileDialog fileDialog;
::SendMessageW( (HWND)fileDialog.winId(), WM_COMMAND, 0x702b, 0);
fileDialog.exec();
不過一直覺得這方法是最下策,總覺得這樣算是偷吃步,並不是真正解決問題
雖然有完成需求才是最重要的...
推
04/29 21:53, , 9F
04/29 21:53, 9F
→
04/29 21:55, , 10F
04/29 21:55, 10F
→
04/29 21:56, , 11F
04/29 21:56, 11F
我發現我文章要打"執行緒"卻打成"副程式",哈哈
感謝L大的指導以前英文沒學好,第一篇文章明天放學要來慢慢邊翻譯邊看了
感謝你
※ 編輯: googled (49.158.60.5), 04/30/2014 00:19:38
※ 編輯: googled (49.158.60.5), 04/30/2014 00:20:19
推
04/30 00:50, , 12F
04/30 00:50, 12F
→
04/30 00:50, , 13F
04/30 00:50, 13F
→
04/30 00:51, , 14F
04/30 00:51, 14F
→
04/30 00:52, , 15F
04/30 00:52, 15F
→
04/30 00:55, , 16F
04/30 00:55, 16F
→
04/30 00:56, , 17F
04/30 00:56, 17F
→
04/30 00:56, , 18F
04/30 00:56, 18F
推
04/30 00:59, , 19F
04/30 00:59, 19F
→
04/30 01:00, , 20F
04/30 01:00, 20F
→
04/30 01:00, , 21F
04/30 01:00, 21F
→
04/30 01:01, , 22F
04/30 01:01, 22F