Q&A

  • Image1의 jpg그림을 Indy를 이용해서 전송하는 방법좀~


예를들자면,



화상채팅도중에 캡쳐한 영상을 다른 Client에게 전송을 하려합니다.



인디컴포넌트초보라 Image는 어떻게 전송하는지 모르겠습니다.



image전송은 text전송방법과는 다른것 같군요~



고수님들 자세한 설명좀 부탁드립니다.





// 보내는 함수 코딩



procedure TForm1.Button1Click(Sender: TObject);

var

myStream: TMemoryStream;

myJpeg : TJpegImage;

begin

myStream := TMemoryStream.Create;

myJpeg := TJpegImage.Create;



myJpeg.Assign(Image1.Picture.Graphic);

myJpeg.SaveToStream(myStream);



TCPClient1.Connect;



TCPClient1.WriteStream(myStream, True, false);



TCPClient1.Disconnect;

myStream.Free;

myJpeg.Free;

end;





// 받는 부분 코딩



procedure TForm1.TCPServer1Execute(AThread: TIdPeerThread);

var

myStream: TMemoryStream;

myJpeg : TJpegImage;

begin

myStream := TMemoryStream.Create;

myJpeg := TJpegImage.Create;



myStream.Position := 0;

AThread.Connection.ReadStream(myStream, -1, False);



myJpeg.LoadFromStream(myStream);

Image2.Assign(myJpeg);



AThread.Connection.Disconnect;

myStream.Free;

myJpeg.Free;

end;





1  COMMENTS
  • Profile
    Ziker 2001.10.01 21:59
    안녕하세요



    작성하신 코드는 일반적으로 사용되는 방식입니다.

    제가 볼땐 별 무리 없을거 같은데요..





    > myStream.Position := 0;

    > AThread.Connection.ReadStream(myStream, -1, False);



    이 소스코드의 순서를 바꿔 보세요.



    즐코 되시길~





    델프리 wrote:

    >

    > 예를들자면,

    >

    > 화상채팅도중에 캡쳐한 영상을 다른 Client에게 전송을 하려합니다.

    >

    > 인디컴포넌트초보라 Image는 어떻게 전송하는지 모르겠습니다.

    >

    > image전송은 text전송방법과는 다른것 같군요~

    >

    > 고수님들 자세한 설명좀 부탁드립니다.

    >

    >

    > // 보내는 함수 코딩

    >

    > procedure TForm1.Button1Click(Sender: TObject);

    > var

    > myStream: TMemoryStream;

    > myJpeg : TJpegImage;

    > begin

    > myStream := TMemoryStream.Create;

    > myJpeg := TJpegImage.Create;

    >

    > myJpeg.Assign(Image1.Picture.Graphic);

    > myJpeg.SaveToStream(myStream);

    >

    > TCPClient1.Connect;

    >

    > TCPClient1.WriteStream(myStream, True, false);

    >

    > TCPClient1.Disconnect;

    > myStream.Free;

    > myJpeg.Free;

    > end;

    >

    >

    > // 받는 부분 코딩

    >

    > procedure TForm1.TCPServer1Execute(AThread: TIdPeerThread);

    > var

    > myStream: TMemoryStream;

    > myJpeg : TJpegImage;

    > begin

    > myStream := TMemoryStream.Create;

    > myJpeg := TJpegImage.Create;

    >

    > myStream.Position := 0;

    > AThread.Connection.ReadStream(myStream, -1, False);

    >

    > myJpeg.LoadFromStream(myStream);

    > Image2.Assign(myJpeg);

    >

    > AThread.Connection.Disconnect;

    > myStream.Free;

    > myJpeg.Free;

    > end;

    >

    >