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

關於圖形失真

尚未結案
nise777
一般會員


發表:5
回覆:6
積分:2
註冊:2004-10-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-07 15:07:50 IP:218.171.xxx.xxx 未訂閱
各位前輩你們好    小弟正用,http://delphi.ktop.com.tw/topic.php?TOPIC_ID=25914 RaynorPao大哥所發表的「TServerSocket & TClientSocket 傳輸檔案範例(Server)」 來傳送圖檔,並模擬傳送中有某個pack遺失而無法送達Server端 圖一是原圖 圖二是用jpeg傳輸的失真 圖三是轉成bmp後傳輸的失真 紅色框框是失真的部分 可是小弟將來想應用到無線網路上(如:利用GPRS Modem傳圖片到電腦上) 必須考量其傳輸檔案的大小 也就是說,小弟想用jpeg的格式傳,但在電腦上看到的是圖三那種失真現象 有什麼辦法可以做到呢? 請各位前輩不吝指教,謝謝! 發表人 - nise777 於 2004/11/07 15:19:55
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-07 23:32:01 IP:211.20.xxx.xxx 未訂閱
引言: 各位前輩你們好 小弟正用,http://delphi.ktop.com.tw/topic.php?TOPIC_ID=25914 RaynorPao大哥所發表的「TServerSocket & TClientSocket 傳輸檔案範例(Server)」 來傳送圖檔,並模擬傳送中有某個pack遺失而無法送達Server端 圖一是原圖 圖二是用jpeg傳輸的失真 圖三是轉成bmp後傳輸的失真 紅色框框是失真的部分 可是小弟將來想應用到無線網路上(如:利用GPRS Modem傳圖片到電腦上) 必須考量其傳輸檔案的大小 也就是說,小弟想用jpeg的格式傳,但在電腦上看到的是圖三那種失真現象 有什麼辦法可以做到呢? 請各位前輩不吝指教,謝謝!
nise777 你好:
(1)如果是使用 TServerSocket/TClientSocket 來傳輸圖片的話,應該會需要自
   行切割封包,因為 TServerSocket/TClientSocket 之間傳輸的封包大小,每
   一次傳輸最好不要超過 1024 Bytes (1KB)。所以,假設你要傳輸的圖片大小
   為 3.5 KB 的話,傳送端就要分成四成傳送,接收端再把收到的封包重組回
   來。可是,如果傳送跟接收的資料不相符的話,就會造成你所說的情況,因
   此,建議你可以自行設計要傳輸的資料結構 (例如: checksum 或 hash),讓
   接收端可以檢查得出所收到封包是否正確,如果不正確的話,就要求傳送端
   再重新傳送一次,這樣才可以確保接收到的封包都是正確的,也自然不會發
   生你所說的情況 (假設你切割跟重組的過程都正確無誤)
(2)另外,如果你覺得自行切割封包很麻煩的話,也可以考慮使用 BCB 內附的
   TNMStrm/TNMStrmServ 元件,或者是 Indy TIdTCPServer/TIdTCPClient 元
   件,這些元件使用起來比較方便,不需要自己切割封包,它們都已經幫你完
   成
(3)例如: 這裡有一個 Indy TIdTCPServer/TIdTCPClient 元件的範例,你可以
   先參考看看
   http://delphi.ktop.com.tw/topic.php?TOPIC_ID=36068
(4)至於 TNMStrm/TNMStrmServ 元件的範例,建議你可依照關鍵字,在本站搜尋
   ,就可以找到很多這方面的相關討論文章及範例
-- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
nise777
一般會員


發表:5
回覆:6
積分:2
註冊:2004-10-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-08 16:17:25 IP:218.171.xxx.xxx 未訂閱
引言:
nise777 你好:
(1)如果是使用 TServerSocket/TClientSocket 來傳輸圖片的話,應該會需要自
   行切割封包,因為 TServerSocket/TClientSocket 之間傳輸的封包大小,每
   一次傳輸最好不要超過 1024 Bytes (1KB)。所以,假設你要傳輸的圖片大小
   為 3.5 KB 的話,傳送端就要分成四成傳送,接收端再把收到的封包重組回
   來。可是,如果傳送跟接收的資料不相符的話,就會造成你所說的情況,因
   此,建議你可以自行設計要傳輸的資料結構 (例如: checksum 或 hash),讓
   接收端可以檢查得出所收到封包是否正確,如果不正確的話,就要求傳送端
   再重新傳送一次,這樣才可以確保接收到的封包都是正確的,也自然不會發
   生你所說的情況 (假設你切割跟重組的過程都正確無誤)
(2)另外,如果你覺得自行切割封包很麻煩的話,也可以考慮使用 BCB 內附的
   TNMStrm/TNMStrmServ 元件,或者是 Indy TIdTCPServer/TIdTCPClient 元
   件,這些元件使用起來比較方便,不需要自己切割封包,它們都已經幫你完
   成
(3)例如: 這裡有一個 Indy TIdTCPServer/TIdTCPClient 元件的範例,你可以
   先參考看看
   http://delphi.ktop.com.tw/topic.php?TOPIC_ID=36068
(4)至於 TNMStrm/TNMStrmServ 元件的範例,建議你可依照關鍵字,在本站搜尋
   ,就可以找到很多這方面的相關討論文章及範例
-- Enjoy Researching & Developing --
RaynorPao兄您好: (1)TServerSocket/TClientSocket 來傳輸,每一次封包大小不超過1KB,這點在讀過您發表的文章後,我有注意到! ( > 發表人 -
系統時間:2024-11-23 9:14:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!