cs_bazbazus
Messages postés120Date d'inscriptionlundi 26 janvier 2009StatutMembreDernière intervention27 août 2015
-
10 mai 2009 à 15:08
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 2016
-
23 juil. 2009 à 17:51
bonjour a tous je suis entrain de creer un logiciel " surveillance réseau " j'ai un problem de capture d'ecran j'utilise socket delphi et je fait des capture d'ecran dans le serveur et j'envoi l'image dans un MemoryStream code : Serveur :
jpg:=TJPEGImage.Create;
ImageBureau.Height := Screen.Height;
ImageBureau.Width := Screen.Width;
BitBlt(ImageBureau.Canvas.Handle, 0, 0,Screen.Width, Screen.Height, GetDC(GetDesktopWindow), 0, 0, SrcCopy);
REDIMENSIONNEMENT_PAR_INTERPOLATION_BILINEAIRE(ImageBureau,WidhCapture,heightCapture);
jpg.CompressionQuality:=QualiterCapture;
jpg.GrayScale:=False;
jpg.Assign(ImageBureau);
//////// envoi
ms:= TMemoryStream.Create;
try
jpg.SaveToStream(ms);
ms.Position:= 0;
Socket.SendText(IntToStr(ms.Size) + #0);
Socket.SendStream(ms);
except
ms.Free;
end;
Client :
try
jpg:=TJPEGImage.Create;
s:= Socket.ReceiveText;
if not Recevieng 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));
Recevieng:= true;
end;
try
Data.Write(s[1], length(s));
if Data.Size = DataSize then
begin
Data.Position:= 0;
jpg.LoadFromStream(data);
ImageCapture.Picture.Bitmap.Assign(jpg);
if not ArreterCapture then
ClientCaptureDecran.Socket.SendText('envoi');
Data.Free;
Recevieng:= false;
StatusBar1.Panels[1].Text:='Capture D''ecran reçu';
end;
except
if not ArreterCapture then
ClientCaptureDecran.Socket.SendText('envoi');
data.Free;
end;
jpg.free;
end;
cs_bazbazus
Messages postés120Date d'inscriptionlundi 26 janvier 2009StatutMembreDernière intervention27 août 2015 12 mai 2009 à 20:46
salut fbalien j'ai trouver la solution aujourduit mais impeut bazare alors j'ai essai de creer plesieur client ( 4 client dans l'pplication d'origine ) et ( 4 application de capture serveur ) sa marche a 20 fps .
il ya un problem quon je fait la capture sur le serveur application me prend 50% de mon processeur est j'ai core de duo 3 ghz alors je dit pas quon je lancer 4 serveur .
cs_darkcodersc
Messages postés7Date d'inscriptionlundi 17 mars 2008StatutMembreDernière intervention20 novembre 2009 23 juil. 2009 à 16:21
Je pensse que c'est la conversion qui prend le plus de temps , essay tu vai voir que lorsque tu converti ton image en jpg il se passe presque 1/2 seconde ( sa depend du pc )
o lieu de faire un screen cap et envoi en boucle essay plutot de detecter les position qui change et de modifier que la parti changer sa irra plus vite la conversion ossi
et utilise les gif c bcp moin lourd ! mias qualité moyene .
Greetz DarkCoderSc
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 23 juil. 2009 à 17:51
Oh le vilain up !!
En plus tu te trompes sur toute la ligne :
et utilise les gif c bcp moin lourd !
Non, le JPG utilise une méthode de compression, alors que le gif enregistre les pixels tels quels. Donc, JPG plus léger que GIF
mias qualité moyene
Encore perdu ! Le jpg propose une compression (et donc une légereté) très importante, au prix d'une perte de qualité conséquente. Cependant, le GIF n'est soumis à aucune perte de qualité puisque tout est enregistré dans le fichier (cependant, les gifs sont limités en 256 couleurs, donc oui ... on ne peut pas tout avoir ).