Q&A

  • Indy UDP에서 이미지 파일을 Stream으로 전송방법.......ㅠ.ㅠ
Indy의 UDPClient로 모니터 화면을 캡쳐해서 Stream으로 날려주려고 UDPSever로 받아서 Image에 뿌려주는건데요......계속 에러가 나네요......ㅠ.ㅠ



몇일째 고민하고 있네요......및에 소스를 보시고 잘못된 부분좀 지적해주세요.......



procedure TfrmClient.Button2Click(Sender: TObject);

var

myStream: TMemoryStream;

myBmp: TBitmap;

myJpeg: TJpegImage;

DeskTopDC: HDc;

Canvas: TCanvas;

R: TRect;

begin

repeat

try

myStream := TMemoryStream.Create;

Canvas := TCanvas.Create;

myBmp := TBitmap.Create;

myJpeg := TJpegimage.Create;



DeskTopDC := GetWindowDC(GetDesktopWindow);

Canvas.Handle := DeskTopDC; //GetDC(0);

mybmp.Width := Screen.Width;

myBmp.Height := Screen.Height;

R := Rect(0, 0, Screen.Width, Screen.Height);

mybmp.Canvas.CopyRect(R, Canvas, R);

myJpeg.Assign(mybmp);

myJpeg.CompressionQuality:= 50;

myJpeg.Compress;

myJpeg.SaveToStream(myStream);

Image1.Picture.Assign(myJpeg);

UDPClient.SendBuffer(myStream, myStream.size);

Application.ProcessMessages;

sleep(100);

finally

Canvas.Free;

myJpeg.Free;

myStream.Free;

mybmp.Free;

end;

until CheckBox1.checked;

end;





받는 부분입니다....

procedure TfrmServer.UDPServerUDPRead(Sender: TObject; AData: TStream;

ABinding: TIdSocketHandle);

var

myStream: TMemoryStream;

myJpeg: TJpegImage;

begin

try

myStream := TMemoryStream.Create;

myJpeg := TJpegImage.Create;



myStream.CopyFrom(AData, AData.size);

myJpeg.LoadFromStream(myStream);

Image1.Picture.Assign(myJpeg);

finally

myStream.Free;

myJpeg.Free;

end;

end;



감사합니다........

1  COMMENTS
  • Profile
    김하늘 2001.12.01 18:20
    올리신 글과 관련하여 자료실에 소스 포함 올려 놓은게 있으니 참고하시지여...



    GIF로 보내는 것에 JPEG으로 보내는것도 포함 모듈화 해놓았으니 소스 몇줄만 고쳐 주시



    면 사용가능할겁니다...