delphi4arab منتديات دلفي للعرب
فيما يخض Stream اراسل صورة من Server الى client - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : فيما يخض Stream اراسل صورة من Server الى client (/showthread.php?tid=2157)



فيما يخض Stream اراسل صورة من Server الى client - andreo - 01-07-2010

سأشرح :
السيرفر يقوم بالتقاط ضورة للشاشة كل 1 ثانية ، يحولها من صيغة BMP الى JPG ثم يخزنها في Stream
و يتم ارسالها الى client الذي يقوم باظهارها في المكون image
لكن أواجه العديد من الأخطاء و ها هو السورس :

السيرفر :

PHP كود :
var

Img:TPicture;
ms:TMemoryStream; 
JPG:TJPEGImage;
 
Bmp :TBitMap;
 
Rect:TRect;


begin
   Img
:=TPicture.Create;
 
Bmp := TBitMap .Create; 
 
ms:=TMemoryStream.Create;

 
Img.Bitmap.Width:=Screen.Width;
 
Img.Bitmap.Height:=Screen.Height;
 
BitBlt(Img.Bitmap.Canvas.Handle,0,0,Screen.Width,Screen.Height,GetDC(GetDesktopWindow),0,0,SrcCopy); 
 
JPG:=TJPEGImage.Create;
 try
 
JPG.Assign(Img.Bitmap); 
 
JPG.CompressionQuality:=15;
 
Bmp.Width :=Jpg.Width -50;
 
Bmp.Height :=Jpg.Height -50;
 
Rect.Left :=0;
 
Rect.Top :=0;
 
Rect.Right :=Bmp.Width-1;
Rect.Bottom:=Bmp.Height-1;
 
Bmp.Canvas.StretchDraw(Rect,Jpg);
 
Jpg.Assign(Bmp);
 
jpg.savetostream(ms);
   
 finally
 
bmp.Free;
 
img.free;
 
JPG.Free;


      
end; 


فيما يخص Client

private
{ Private declarations }
Reciving: boolean;
DataSize: integer;
Data: TMemoryStream;

PHP كود :
procedure TForm1.client1Read(Sender: TObject; Socket: TCustomWinSocket);
var
  
s, sl: string;
begin
  s
:= Socket.ReceiveText;
  if 
not Reciving then
  begin
    SetLength
(sl, StrLen(PChar(s))+1); 
    
StrLCopy(@sl[1], PChar(s), Length(sl)-1);
    
DataSize:= StrToInt(sl);
    
Data:= TMemoryStream.Create;
    
Delete(s, 1, Length(sl));
    
Reciving:= true;
  
end;
  try
    
Data.Write(s[1], length(s));
    if 
Data.Size = DataSize then
    begin
      Data
.Position:= 0;
      
Image1.Picture.Bitmap.LoadFromStream(Data);
      
Data.Free;
      
Reciving:= false;
      
Socket.Close;
    
end;
  
except
    Data
.Free;
  
end; 



التناقض الذي وقت فيه :
الصورة ترسل على شكل JPG كيف يتم استقبالها على شكل BMP و هو أول خطأ

فما الحل ؟


فيما يخض Stream اراسل صورة من Server الى client - musvc - 03-07-2010

[color="purple"]تفضل اخي
هذا سورس معدل و مجرب, فقط قم بالتعديل على الـ ip ( الأيبي الأفتراضي هو 127.0.0.1 اي الـ ip الخاص بجهازك )

سلامي لك[/color]


فيما يخض Stream اراسل صورة من Server الى client - andreo - 04-07-2010

شكرا أخي على السورس
السورس الذس أعطيتني 10/10 و حتى السورس الذس أنجزته أنا يعمل
المشكلة ليست في السورسات التي عندي انما قي الدلفي 2010 أخطاء كثير ولا تحصى
دلفي 7 أفضل بكثير