sajioo
جمعه 06 اسفند 1389, 12:03 عصر
سلام دوستان
راستش چند وقته که دارم روی یک برنامه کار می کنم که با وب کم تحت شبکه طرف دیگر بتونه تصویر دیگری رو ببینه . درست مثل وبکم یاهو.
ایده ی من این بود که هر وقت تصویر وب کم تغییر کرد از اون تصویر جدید عکس بگیرم و بفرستم به client
این کار انجام می شه دوستان اما وقتی حرکات زیاد می شه و تعداد عکس های که باید ارسال بشه زیاد می شه برنامه خطای زیر رو میده.
66800
کدی هم که برای ارسال عکس نوشتم اینه . البته این کد رو از برنامه ی یکی از دوستان کمک گرفتم.
var
c : TCanvas;
b : TBitmap;
j : TJPEGImage;
s ,s1 : TStream;
//__________________________________________________ _________
function CompressStream (Source, FStream: TStream): Single;
var
comprStream: TCompressionStream;
begin
comprStream := TCompressionStream.Create(clFastest, FStream);
try
comprStream.CopyFrom(Source, Source.Size);
finally
comprStream.Free;
end;
end;
procedure TForm1.IdTCPServer1TIdCommandHandler0Command(ASend er: TIdCommand);
begin
try
s:=TMemoryStream.Create;
s1:=TMemoryStream.Create;
c.Handle:=GetDC(GetDesktopWindow);
b.Canvas.CopyRect(Rect(0,0,b.Width,b.Height),c,Rec t(0,0,Screen.Width,Screen.Height));
//j.Assign(Image11.Picture);
j.CompressionQuality:=50;
j.Compress;
j.SaveToStream(s);
s.Position:=0;
CompressStream(s,s1);
ASender.Thread.Connection.WriteStream(s1,true,true );
finally
s.Free ;
s1.Free;
end;
end;
راستش چند وقته که دارم روی یک برنامه کار می کنم که با وب کم تحت شبکه طرف دیگر بتونه تصویر دیگری رو ببینه . درست مثل وبکم یاهو.
ایده ی من این بود که هر وقت تصویر وب کم تغییر کرد از اون تصویر جدید عکس بگیرم و بفرستم به client
این کار انجام می شه دوستان اما وقتی حرکات زیاد می شه و تعداد عکس های که باید ارسال بشه زیاد می شه برنامه خطای زیر رو میده.
66800
کدی هم که برای ارسال عکس نوشتم اینه . البته این کد رو از برنامه ی یکی از دوستان کمک گرفتم.
var
c : TCanvas;
b : TBitmap;
j : TJPEGImage;
s ,s1 : TStream;
//__________________________________________________ _________
function CompressStream (Source, FStream: TStream): Single;
var
comprStream: TCompressionStream;
begin
comprStream := TCompressionStream.Create(clFastest, FStream);
try
comprStream.CopyFrom(Source, Source.Size);
finally
comprStream.Free;
end;
end;
procedure TForm1.IdTCPServer1TIdCommandHandler0Command(ASend er: TIdCommand);
begin
try
s:=TMemoryStream.Create;
s1:=TMemoryStream.Create;
c.Handle:=GetDC(GetDesktopWindow);
b.Canvas.CopyRect(Rect(0,0,b.Width,b.Height),c,Rec t(0,0,Screen.Width,Screen.Height));
//j.Assign(Image11.Picture);
j.CompressionQuality:=50;
j.Compress;
j.SaveToStream(s);
s.Position:=0;
CompressStream(s,s1);
ASender.Thread.Connection.WriteStream(s1,true,true );
finally
s.Free ;
s1.Free;
end;
end;