線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3162
推到 Plurk!
推到 Facebook!

自制數碼照片瀏覽器

 
skcc
中階會員


發表:36
回覆:96
積分:88
註冊:2002-08-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-13 12:18:51 IP:210.0.xxx.xxx 未訂閱
這是我自制的照片瀏覽器(圖),其功能包括: 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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-13 13:22:26 IP:211.22.xxx.xxx 未訂閱
帥喔~~demo相片中有你本人的玉照嗎? ========================= ~為了更簡單,必須更複雜~
skcc
中階會員


發表:36
回覆:96
積分:88
註冊:2002-08-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-10-13 13:50:41 IP:210.0.xxx.xxx 未訂閱
引言: 帥喔~~demo相片中有你本人的玉照嗎? ========================= ~為了更簡單,必須更複雜~ < face="Verdana, Arial, Helvetica"> 小弟的照片有在 demo 出現啊……你猜猜我在那裡…
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-10-13 18:12:28 IP:192.168.xxx.xxx 未訂閱
引言: 小弟的照片有在 demo 出現啊……你猜猜我在那裡… < face="Verdana, Arial, Helvetica"> 該不會是右下角的老夫子吧~ ~~~
------
~~~Delphi K.Top討論區站長~~~
skcc
中階會員


發表:36
回覆:96
積分:88
註冊:2002-08-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-10-13 18:32:02 IP:210.0.xxx.xxx 未訂閱
引言: 該不會是右下角的老夫子吧~ ~~~>< face="Verdana, Arial, Helvetica"> < >哈哈… 我還未到這樣年紀…< > Anthony Lee
hcker
中階會員


發表:95
回覆:118
積分:62
註冊:2003-02-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-10-14 09:24:53 IP:218.19.xxx.xxx 未訂閱
肯定是重複出現的那張…… ----------要知道自己有多笨,到DelphiK.Top來看看----------
skcc
中階會員


發表:36
回覆:96
積分:88
註冊:2002-08-28

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-10-14 11:25:27 IP:210.0.xxx.xxx 未訂閱
引言: 肯定是重複出現的那張…… ----------要知道自己有多笨,到DelphiK.Top來看看----------
我的照片沒重複啊…< > 開估了…我的照片就是在第一排中間的那一張…< > Anthony Lee
小蚊子
中階會員


發表:55
回覆:267
積分:94
註冊:2002-06-08

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-10-14 21:09:25 IP:211.78.xxx.xxx 未訂閱
請問 skcc 有關您說的 MemoryStream ,有範例可以參考嗎? 謝謝您了!    
引言: >>2. 利用 MemoryStream 把內容直接指給 TCppWebBrowser,並不須要用暫存檔減少 I/O 動作。
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-10-15 09:23:16 IP:211.21.xxx.xxx 未訂閱
我有兩個問題跟長官報告 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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-10-15 10:34:04 IP:210.0.xxx.xxx 未訂閱
引言: 我有兩個問題跟長官報告 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

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-10-15 10:40:51 IP:210.0.xxx.xxx 未訂閱
引言: 請問 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

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-10-15 10:49:40 IP:211.21.xxx.xxx 未訂閱
感謝長官指教 我並不熟悉JAVASCRIPT  不過有新的了解,對了 長官怎麼換名字了
skcc
中階會員


發表:36
回覆:96
積分:88
註冊:2002-08-28

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-10-15 11:05:15 IP:210.0.xxx.xxx 未訂閱
引言: 感謝長官指教 我並不熟悉JAVASCRIPT 不過有新的了解,對了 長官怎麼換名字了 < face="Verdana, Arial, Helvetica"> bruce0211兄,給你舉的例子是 Java 並不是 Javascript,你可隨便找個 Serverlet Container 例如 Apache Jakarta Project 的 Tomcat 試試看… 至於換名字?我可沒有換名啊…我在我所參與的論壇都是用 >…
小蚊子
中階會員


發表:55
回覆:267
積分:94
註冊:2002-06-08

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-10-16 00:52:06 IP:211.78.xxx.xxx 未訂閱
謝謝您的範例, 我測試後若還有問題,再向前輩您請教!!
Blueberrug
一般會員


發表:14
回覆:50
積分:17
註冊:2005-05-22

發送簡訊給我
#15 引用回覆 回覆 發表時間:2005-10-23 21:33:19 IP:219.70.xxx.xxx 未訂閱
請問長官一下,既然可以直接這樣顯示圖片, 那是否有辦法將TCppWebbrowser顯示的內容 輸出成圖片顯示呢?謝謝您的幫忙啊!
系統時間:2024-11-22 0:21:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!