自制數碼照片瀏覽器 |
|
skcc
中階會員 發表:36 回覆:96 積分:88 註冊:2002-08-28 發送簡訊給我 |
這是我自制的照片瀏覽器(圖),其功能包括:
1. 在"縮圖瀏覽"顯示頁,可提供即時顯示照片縮圖。
2. 可供使用者自行設定縮圖大小。
3. 可供使用者自行設定縮圖排列格式。
4. 使用者祇須點選檔案名稱,即可以用"個別瀏覽"顯示頁瀏覽圖片。
5. 在"個別瀏覽"顯示頁,使用者可使用 "放大至可顯示範圍" 、"以 1:1 方式顯示"、向左或向右旋轉照片,亦可按下"檔案編輯"按鈕,來開啟預設的應用程式編輯照片。
6. 在"縮圖瀏覽"顯示頁,使用者可以在瀏覽照片同時選取照片檔案,所有被選的檔案將可在"已選取照片"顯示頁的選取列表中找到每一張已選的照片,並可在"已選取照片"顯示頁中使用所有"個別瀏覽"顯示頁的所有功能。
7. 在"已選取照片"顯示頁,使用者可複製所有在選取列表中的檔案到使用者指定的目錄中(我個人會用此功能來刻錄CD,並把 CD 送到照相鋪製成真正照片。)
8. 使用者可自行移除在選取列表中的每一個項目。
檢討: 在此照片瀏覽器專案中,個人認為較特別的技巧在於:
1. 使用了 TCppWebBrowser 作為縮圖顯示元件。
2. 利用 MemoryStream 把內容直接指給 TCppWebBrowser,並不須要用暫存檔減少 I/O 動作。
3. 利用欄截 URL 方法來模擬 HTML 頁面與 BCB 程式之間的互動橋樑。 Anthony Lee 發表人 - skcc 於 2003/10/13 13:47:52 發表人 - skcc 於 2003/10/13 15:14:37
|
dotdot
版主 發表:29 回覆:142 積分:64 註冊:2002-08-09 發送簡訊給我 |
|
skcc
中階會員 發表:36 回覆:96 積分:88 註冊:2002-08-28 發送簡訊給我 |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
|
skcc
中階會員 發表:36 回覆:96 積分:88 註冊:2002-08-28 發送簡訊給我 |
|
hcker
中階會員 發表:95 回覆:118 積分:62 註冊:2003-02-09 發送簡訊給我 |
|
skcc
中階會員 發表:36 回覆:96 積分:88 註冊:2002-08-28 發送簡訊給我 |
|
小蚊子
中階會員 發表:55 回覆:267 積分:94 註冊:2002-06-08 發送簡訊給我 |
|
bruce0211
版主 發表:157 回覆:668 積分:279 註冊:2002-06-13 發送簡訊給我 |
我有兩個問題跟長官報告
1.我也很好奇有關 MemoryStream , 據我所知 TCppWebBrowser 只是 IE 的一個 shell , 是基於瀏覽器的運作方式 , 瀏覽器瀏覽圖片就是要有實際圖檔存在(應該就是長官所說會增加 I/O 動作的暫存檔),瀏覽器無法將圖檔"鑲崁"在瀏覽器中 , 所謂"利用 MemoryStream 把內容直接指給 TCppWebBrowser,並不須要用暫存檔減少 I/O 動作" , 既然長官實作出來, 我也想知道這種高深技術是怎麼回事 ...
2.檔案下載後放到 c:\底下執行 , 一值重複出現 "Program tracer cannot be found" 及 "The specified file was not found" 兩個 messagebox , 程式無法關閉 , 我 c:\底下也有 jpg , bmp 等檔案可供瀏覽 ... , 也查過附屬 ini 檔內容 default dir 的確也是在 c:\ , 為了怕檔案有錯,我也重新下載解壓仍出現相同結果,不知其它下載過的長官是否無此問題,或是站長的下載人數技術器有誤 ....(到目前為止,下載人次 65 人)
以上,謝謝
|
skcc
中階會員 發表:36 回覆:96 積分:88 註冊:2002-08-28 發送簡訊給我 |
引言: 我有兩個問題跟長官報告 1.我也很好奇有關 MemoryStream , 據我所知 TCppWebBrowser 只是 IE 的一個 shell , 是基於瀏覽器的運作方式 , 瀏覽器瀏覽圖片就是要有實際圖檔存在(應該就是長官所說會增加 I/O 動作的暫存檔),瀏覽器無法將圖檔"鑲崁"在瀏覽器中 , 所謂"利用 MemoryStream 把內容直接指給 TCppWebBrowser,並不須要用暫存檔減少 I/O 動作" , 既然長官實作出來, 我也想知道這種高深技術是怎麼回事 ... 2.檔案下載後放到 c:\底下執行 , 一值重複出現 "Program tracer cannot be found" 及 "The specified file was not found" 兩個 messagebox , 程式無法關閉 , 我 c:\底下也有 jpg , bmp 等檔案可供瀏覽 ... , 也查過附屬 ini 檔內容 default dir 的確也是在 c:\ , 為了怕檔案有錯,我也重新下載解壓仍出現相同結果,不知其它下載過的長官是否無此問題,或是站長的下載人數技術器有誤 ....(到目前為止,下載人次 65 人) 以上,謝謝bruce0211 兄, 1. 你的說法某部份是對的。不過我的做法是省卻了寫一個暫存的 HTML 檔,來給 TCppWebBrowser 讀進去。 至於你說-->"瀏覽器瀏覽圖片就是要有實際圖檔存在",其實並不完全是的。瀏覽器是可直接顯示 Stream 的 Data 的,我嘗試舉個例子吧。像以下的一個 Java Serverlet 就可以利用 Stream 方式傳給瀏覽器來顯示 Gif 格式的圖片: package skcc.forumservlet; import java.sql.*; import java.util.*; import java.lang.*; import java.text.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class GetIconservlet extends HttpServlet { private static final String CONTENT_TYPE = "image/gif"; public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { response.setContentType( CONTENT_TYPE ); ServletOutputStream out = response.getOutputStream(); .. .. FileInputStream fis = new FileInputStream( Iconfile ); //把圖檔轉成 Stream BufferedInputStream IconData = new BufferedInputStream( fis ); byte[] buf = new byte[4096]; //4k buffer int len; while( (len=IconData.read( buf, 0, buf.length ) ) != -1 ) out.write( buf, 0, len ); //把 Stream 送到使用者的瀏覽器 .. .. } }2. 關於 "Program tracer cannot be found" 問題,是由於小弟大意,忘了把 debug 信息關掉,所以…請重新下載吧…應該沒此問題的。 Anthony Lee |
skcc
中階會員 發表:36 回覆:96 積分:88 註冊:2002-08-28 發送簡訊給我 |
引言: 請問 skcc 有關您說的 MemoryStream ,有範例可以參考嗎? 謝謝您了!小蚊子你好,你可試試以下的範例: TMemoryStream *stm = new TMemoryStream(); TStreamAdapter *sa = new TStreamAdapter( stm, soReference ); Memo1->Lines->SaveToStream( stm ); //假設 Memo1 的內容為HTML IPersistStreamInit *psi = NULL; stm->Seek( 0, 0 ); if ( sa == NULL ) { delete stm; return; } _di_IDispatch doc = browser->Document; //browser 為 TCppWebBrowser 元件 if ( doc == NULL ) { TVariant url = "about:blank"; browser->Navigate2( &url ); while ( doc == NULL ) { Application->ProcessMessages(); doc = browser->Document; } } if ( doc->QueryInterface(IID_IPersistStreamInit, (void**)&psi ) == S_OK ) { if ( psi ) { psi->Load( *sa ); } } else delete sa; delete stm; |
bruce0211
版主 發表:157 回覆:668 積分:279 註冊:2002-06-13 發送簡訊給我 |
|
skcc
中階會員 發表:36 回覆:96 積分:88 註冊:2002-08-28 發送簡訊給我 |
|
小蚊子
中階會員 發表:55 回覆:267 積分:94 註冊:2002-06-08 發送簡訊給我 |
|
Blueberrug
一般會員 發表:14 回覆:50 積分:17 註冊:2005-05-22 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |