如何將stream切成數個stream用 idudp傳jpeg檔 |
答題得分者是:Jasonwong
|
frog1
一般會員 ![]() ![]() 發表:25 回覆:40 積分:18 註冊:2007-01-24 發送簡訊給我 |
Hi, 各位前輩
我要由一部電腦將萬劃素的JPEG傳到另一部並PLAY出來, 我用IDUDPClient/Server來作,源碼如下 但遇到二個問題, 請那位仁兄可以協助我修改解決 謝 1.JPEG的封包太大, 每次只傳不到1/10, 有找過其他的討論, 說要切割封包, 可是不會做, 請指導 2.做檔案壓縮, 可是一壓檔案大小就為零 //接收端, 收到後PLAY, 但只PLAY整張圖1/10不到 procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream; ABinding : TIdSocketHandle); Var Jpeg : TJpegImage; begin Try JPeg := TJpegImage.Create; Jpeg.LoadFromStream(AData); Image1.Picture.Bitmap.Assign(Jpeg); Jpeg.Free; Except End; end; //傳送端, 固定時間作業 procedure TForm1.Timer1Timer(Sender: TObject); Var Jpeg : TJpegImage; MemStream : TMemoryStream; begin MemStream := TMemoryStream.Create; Jpeg := TJpegImage.Create; Try Jpeg.LoadFromFile('c:\RealTime.Jpg'); Except End; Jpeg.CompressionQuality := 10; Jpeg.JPEGNeeded; // Jpeg.Compress; -->如執行壓縮MemStream.Size 就為零, 接收端就無任何圖像 Image2.Picture.Bitmap.Assign(Jpeg); Jpeg.SaveToStream(MemStream); IdUDPClient1.BroadcastEnabled := True; If MemStream.Size > IdUDPClient1.BufferSize Then IdUDPClient1.SendBuffer('192.168.100.101',9001,MemStream.Memory^,IdUDPClient1.BufferSize) Else IdUDPClient1.SendBuffer('192.168.100.101',9001,MemStream.Memory^,MemStream.Size); MemStream.Free; end; |
Jasonwong
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:49 回覆:931 積分:581 註冊:2006-10-27 發送簡訊給我 |
|
mustapha.wang
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:89 回覆:409 積分:274 註冊:2002-03-13 發送簡訊給我 |
|
frog1
一般會員 ![]() ![]() 發表:25 回覆:40 積分:18 註冊:2007-01-24 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |