全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1436
推到 Plurk!
推到 Facebook!

IdUDPClient 和 IdUDPServer进行图象的传输的问题

尚未結案
huashi
一般會員


發表:7
回覆:8
積分:3
註冊:2003-06-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-13 15:07:23 IP:211.90.xxx.xxx 未訂閱
经测试,传送和接受的大小相同: 接受的代码: procedure TServer.IdUDPServer1UDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle); var RsltStream:TMemoryStream; begin RsltStream:=TMemoryStream.Create; RsltStream.CopyFrom(AData,AData.Size); if RsltStream.Size <= self.IdUDPServer1.BufferSize then begin RsltStream.Position:=0; Image1.Picture.Bitmap.LoadFromStream(RsltStream);//出错,说图象无效! RsltStream.Clear; end; end; 传输的代码略了,Image1.Picture.Bitmap.LoadFromStream(RsltStream);这句有问题。显示:‘Bitmap image is not valid' 發表人 - huashi 於 2003/06/13 16:25:07
China Join
中階會員


發表:81
回覆:242
積分:89
註冊:2003-03-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-13 21:37:48 IP:218.174.xxx.xxx 未訂閱
把每個傳輸單位設定成 2048 byte,接收時再把他組合起來 請參考下面說明: http://www.ccw.com.cn/htm/app/aprog/02_1_25_2.asp
huashi
一般會員


發表:7
回覆:8
積分:3
註冊:2003-06-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-16 12:03:03 IP:211.90.xxx.xxx 未訂閱
图象传输还是有问题 我看到有将bmp转化成jpeg后再传输的,是由于转化后的图象的大小有变化,还是因为其它的原因呢?,哪位能不能给个实际应用的例子,先谢谢了
China Join
中階會員


發表:81
回覆:242
積分:89
註冊:2003-03-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-06-16 13:21:42 IP:218.170.xxx.xxx 未訂閱
huashi 你先傳個小檔案試試(1、2 K 大小的圖檔),看看行不行,若不行把檔案傳到會員上傳檔案區我幫你試試(Client 和 Server 都要)
China Join
中階會員


發表:81
回覆:242
積分:89
註冊:2003-03-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-06-16 13:25:59 IP:218.170.xxx.xxx 未訂閱
引言: 图象传输还是有问题 我看到有将bmp转化成jpeg后再传输的,是由于转化后的图象的大小有变化,还是因为其它的原因呢?,哪位能不能给个实际应用的例子,先谢谢了
剛剛看了一下 Indy 本身有附一個例子,不過是傳字串的,你有試過傳字串嗎?
China Join
中階會員


發表:81
回覆:242
積分:89
註冊:2003-03-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-06-16 13:33:48 IP:218.170.xxx.xxx 未訂閱
引言: 图象传输还是有问题 我看到有将bmp转化成jpeg后再传输的,是由于转化后的图象的大小有变化,还是因为其它的原因呢?,哪位能不能给个实际应用的例子,先谢谢了
另外如果你傳的是 jpeg 不能用 Image1.Picture.Bitmap.LoadFromStream(RsltStream); 請改成 jpeg: TJPEGImage; try jpeg.LoadFromStream(RsltStream); Image1.Picture.Assign(jpeg); finally jpeg.Free; Stream1.Free; end;
huashi
一般會員


發表:7
回覆:8
積分:3
註冊:2003-06-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-06-16 14:40:46 IP:211.90.xxx.xxx 未訂閱
传字符串是可以的,我测试过了。 传送的代码: procedure TClient.Button1Click(Sender: TObject); begin ScreenCap(0,0,10,10);//获得得屏幕区域位图的函数,同时赋值给bmpstream--TMemoryStream self.IdUDPClient1.BufferSize:=bmpstream.Size; self.IdUDPClient1.SendBuffer(self.IdUDPClient1.Host, self.IdUDPClient1.Port,bmpstream,bmpstream.Size); end; 接收的代码: 接受的代码: procedure TServer.IdUDPServer1UDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle); var RsltStream:TMemoryStream; begin RsltStream:=TMemoryStream.Create; RsltStream.CopyFrom(AData,AData.Size); if RsltStream.Size <= self.IdUDPServer1.BufferSize then begin RsltStream.Position:=0; Image1.Picture.Bitmap.LoadFromStream(RsltStream);//出错,说图象无效! RsltStream.Clear; end; end; 另外我也试过传jpeg,也有错使用格式:jpeg.LoadFromStream(RsltStream); Image1.Picture.Assign(jpeg);
系統時間:2024-05-02 7:27:11
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!