ENVOI ET RÉCEPTION D'UNE CAPTURE D'ÉCRAN PAR STREAMS AVEC LES COMPOSANTS TCP IND

cali70 Messages postés 71 Date d'inscription mercredi 29 septembre 2004 Statut Membre Dernière intervention 19 mars 2008 - 4 oct. 2004 à 20:32
cs_Nostaroth Messages postés 13 Date d'inscription mercredi 29 novembre 2006 Statut Membre Dernière intervention 14 mai 2009 - 29 sept. 2007 à 19:13
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/26586-envoi-et-reception-d-une-capture-d-ecran-par-streams-avec-les-composants-tcp-indy

cs_Nostaroth Messages postés 13 Date d'inscription mercredi 29 novembre 2006 Statut Membre Dernière intervention 14 mai 2009
29 sept. 2007 à 19:13
Est il possible d'envoyer la capture sans fair de connexion/deconnexion, c'est a dire on se connecte une foi aprés c'est tout?

Repondez moi sil vou plait c'est important
taye78 Messages postés 106 Date d'inscription mardi 18 juin 2002 Statut Membre Dernière intervention 13 janvier 2007
17 oct. 2005 à 16:53
askil2000 tu dois "forwarder" le port du serveur oú le client va se connecter en accédant au config du routeur (souvent en te connectant sur son adresse ip)
a+
cs_askil2000 Messages postés 92 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 12 avril 2010
17 oct. 2005 à 03:00
Salut à tous, je voulais tout dabor te remercier pour ta source qui traite simplement un sujet compliqué ;) cependant j'ai un petit problème que je pose à tous bien-entendu. Je voudrais tout simplement (c vite di lol) me connecter au server et lui transmettre les données, sachant que ce dernier se trouve derrière un routeur :(
si qq'un peut me dire comment on fait un route sur un programme ?
j'ai déja été confronté à ce problème plusieurs fois, sachant que j'ai biensure les 2 adresses IP Internet exemple : 220.125.18.102 et adresse locale : 192.168.0.2 je souhaite tout simplement passer le routeur en me connectant au server directement. Merci à tous et surtout bonne prog !!!
ewertheimer Messages postés 161 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 26 janvier 2009
24 juin 2005 à 20:53
J'ai essayer autre chose qui je pense marcherais mieux : au faite webcam c'est Image1.
procedure TForm1.Button5Click(Sender: TObject);

var
Img:TPicture;
MemStream:TMemoryStream; // Déclaration des variables
JPG:TJPEGImage;
Bmp :TBitMap;
Rect:TRect;

begin

Img:=TPicture.Create;
Bmp := TBitMap .Create; //Initialisation des variables qui doivent l'être
MemStream:=TMemoryStream.Create;

Img.Bitmap.Assign(webcam);


JPG:=TJPEGImage.Create;
try
JPG.Assign(Img.Bitmap); //Conversion en jpg
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(Memstream);//Chargement de l'image jpg dans le stream
finally
bmp.Free;
img.free;
JPG.Free;
try
with IdTCPClient1 do
begin

OpenWriteBuffer;
WriteStream(memstream);//Envoi du stream
CloseWriteBuffer;
memstream.Free;
disconnect; //Déconnexion
end;
except

end;

end;
end;
Ensuite il y a une classe d'exception EConvertError avec le message impossible d'affecter TImage à TBitmap
Pourrais tu m'aider j'en ai grandement besoin!!!!
ewertheimer Messages postés 161 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 26 janvier 2009
24 juin 2005 à 20:45
J'ai modifier un peu ton code comme ceci :
procedure TForm1.Button5Click(Sender: TObject);

var
Img:TPicture;
MemStream:TMemoryStream; // Déclaration des variables
JPG:TJPEGImage;
Bmp :TBitMap;
Rect:TRect;

begin

Img:=TPicture.Create;
Bmp := TBitMap .Create; //Initialisation des variables qui doivent l'être
MemStream:=TMemoryStream.Create;

Img.Bitmap.Width:=webcam.Width;
Img.Bitmap.Height:=webcam.Height;

JPG:=TJPEGImage.Create;
try
JPG.Assign(webcam); //Conversion en jpg
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(Memstream);//Chargement de l'image jpg dans le stream
finally
bmp.Free;
img.free;
JPG.Free;
try
with IdTCPClient1 do
begin

OpenWriteBuffer;
WriteStream(memstream);//Envoi du stream
CloseWriteBuffer;
memstream.Free;
disconnect; //Déconnexion
end;
except

end;

end;
end;
Et ils me disent qu'iol y a une excpetion : impossible d'affecter un TImge à un TBitmap.
ewertheimer Messages postés 161 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 26 janvier 2009
24 juin 2005 à 09:20
Quand je met en route le code du client il me dise que TJPEGImage n'est pas un identificateur declare. Et sa me fou tout en l'air pourrais tu m'aider
ewertheimer Messages postés 161 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 26 janvier 2009
24 juin 2005 à 09:05
Quand je met en route le code du client il me dise que tjpegimage n'est pas un identificateur declare.
ewertheimer Messages postés 161 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 26 janvier 2009
24 juin 2005 à 08:58
J'aimerais savoir comment est ce que on peut faire pour ajouter une procedure sans passer par un TButton??
cs_chick Messages postés 4 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 29 novembre 2004
29 nov. 2004 à 16:16
Bonjour je vous demande de l'aide sur le type Tbitmap

regardez
bmp1.assign(image1.bmp);
bmp2.assign(image1.bmp);

if bmp1=bmp2 donne false !!!!!
aidez moi je coule
berdjane_b@yahoo.fr
cs_Antidote Messages postés 163 Date d'inscription lundi 29 septembre 2003 Statut Membre Dernière intervention 8 mai 2010
19 oct. 2004 à 17:28
Salut pour votre pb d'écran Mozilla permet de tout vizualiser même so le texte déborde à droite au moins il n'est pas rogner. ^^
cali70 Messages postés 71 Date d'inscription mercredi 29 septembre 2004 Statut Membre Dernière intervention 19 mars 2008
10 oct. 2004 à 11:44
Voilà pour ceux qui sont éventuellement interessés de voir ce que ca donne, le code pour c++ builder 6 est ici :
http://www.cppfrance.com/code.aspx?id=26700.

Bonne progz à tous !
cali70 Messages postés 71 Date d'inscription mercredi 29 septembre 2004 Statut Membre Dernière intervention 19 mars 2008
9 oct. 2004 à 22:33
Quelque chose dans le style oui, j'imagine. Pas implémenté de cette maniere là car mes sources ne sont pas écrites dans ce but à la base mais les fonctions d'envois et de réception doivent être du même principe. Je suppose néanmoins que un logiciel comme vnc transmet au client uniquement les pixels qui changent à l'écran pour alleger le flux de données à envoyer et non pas une capture d'écran complete à chaque fois. Enfin ce n'est que pur supposition de ma part... +++
Inekman Messages postés 291 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 30 juin 2006
9 oct. 2004 à 21:14
est-ce que VNC utilise ce genre de procédé ?
cali70 Messages postés 71 Date d'inscription mercredi 29 septembre 2004 Statut Membre Dernière intervention 19 mars 2008
9 oct. 2004 à 20:37
Pour ceux que ca interesse j'ai l'équivalent de ce code pour C++ Builder 6. C'est très ressemblant à part quelques différences de syntaxe bien entendu. Je l'ai posté dans la partie C++ du site mais il semble ne pas apparaitre pour le moment donc si vous êtes interessé par ca ou autre chose : cali7-0@wanadoo.fr ou marcramage@hotmail.com pour msn.

Bonne progz tout le monde...
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
7 oct. 2004 à 18:55
Écrit moi en cliquant sur mon nom et donne moi ton mail. Je te donnerai la source ...
cali70 Messages postés 71 Date d'inscription mercredi 29 septembre 2004 Statut Membre Dernière intervention 19 mars 2008
6 oct. 2004 à 21:21
Je suis interessé par ce que tu as trouvé, quelle solution proposes tu ?
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
6 oct. 2004 à 13:26
La largeur de la cellule de la table oú se trouve le commentaire est plus grande que l' espace disponible par la table elle meme! c' est donc une erreur de mise en page du Webmaster.
Sinon, ton code, j' ai trouvé la meme chose mais sans les composants Indy.
Inekman Messages postés 291 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 30 juin 2006
5 oct. 2004 à 12:39
ah oui, là c'est plus clair :-)
Inekman Messages postés 291 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 30 juin 2006
5 oct. 2004 à 12:26
1280 * 10245 et c'est aussi bordelique que chez toi :-P

Par contre concernant le code, est-ce qu'il aurait été possible de mettre :
try
tcp.Connect; //Connexion du client tcp
form1.sendstr; //Execution de la procédure définie plus haut
except
showmessage('connextion impossible'); //On affiche une boite de dialogue qui nous informe


directement dans l'évènement OnClick du bouton...Je vois pas à quoi sert le Timer :-)
cali70 Messages postés 71 Date d'inscription mercredi 29 septembre 2004 Statut Membre Dernière intervention 19 mars 2008
4 oct. 2004 à 21:04
Je viens de tester, ceux qui ont une résolution d'écran supérieure à 1024*768 devraient tout voir sans probleme je pense... (j'ai un moniteur 15 pouces que voulez vous.... :( )
cali70 Messages postés 71 Date d'inscription mercredi 29 septembre 2004 Statut Membre Dernière intervention 19 mars 2008
4 oct. 2004 à 20:49
Bon est bien si quelqu'un sait de quoi ca vient.... Qu'on me le dise si je peux corriger ca en modifiant la source :(
taye78 Messages postés 106 Date d'inscription mardi 18 juin 2002 Statut Membre Dernière intervention 13 janvier 2007
4 oct. 2004 à 20:44
Effectivement j'ai le meme probleme chez moi.
Dommage.
cali70 Messages postés 71 Date d'inscription mercredi 29 septembre 2004 Statut Membre Dernière intervention 19 mars 2008
4 oct. 2004 à 20:32
Je sais pas si ca vient de moi ou pas mais quand je consulte la source sur le site, une partie du texte est mangée sur la droite :( Pas ma faute!
Rejoignez-nous