Transfert fichier jpeg

thorodin Messages postés 22 Date d'inscription vendredi 17 février 2006 Statut Membre Dernière intervention 5 mai 2009 - 12 août 2006 à 17:37
cs_max12 Messages postés 1491 Date d'inscription dimanche 19 novembre 2000 Statut Modérateur Dernière intervention 7 juillet 2014 - 18 août 2006 à 23:43
bonjour,

voila le problème:  il faut  que je transfère automatiquement des images jpeg d'une caméra à un PC.
La  caméra  doit  se  comporter  comme  un client  et  le PC  comme  un serveur . est ce que quelqu'un pourrait m'aiguiller sur l'utilisation d'un serveur ftp et d'un client progrmmé en C?

Merci de vos réponses.

A+.

10 réponses

Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
12 août 2006 à 17:47
Salut,


je crois que tu n'es pas au bon endroit pour poser cette question


ici c'est le "Bar"
Essaye de la poser ici : http://www.cppfrance.com/Default.aspx 
tes chances seront plus grandes d'avoir une réponse

@+
Cirec
0
cs_Kysic Messages postés 332 Date d'inscription mardi 12 juillet 2005 Statut Membre Dernière intervention 17 juillet 2010
12 août 2006 à 17:58
Si tu veux pas te fatiguer tu peux utilisé des logiciels existants, par exemple:
Lightning pour la capture et l'envoi par ftp, et un serveur ftp sur l'autre ordinateur.
Si tu veuw du C, c'est pas là comme on vient de te l'indiquer,
sinon en java tu peux creer le client et le serveur en utilisant java.net (ServerSocket, Socket ...),
tu trouvera sur ce site:
http://www.javafr.com/codes/WEBCAM-LIVE_30081.aspx qui semble faire la même chose que Lightning,
ainsi  que :
http://www.javafr.com/codes/CAPTURE-PHOTOS-PARTIR-WEBCAM_25802.aspx
http://www.javafr.com/codes/APPLICATION-TRANSFERT-FICHIER-VIA-FTP_34193.aspx
Voilà bon courage
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
12 août 2006 à 18:08
Message déplacé dans le bonne section !

<hr size="2" />VC# forever
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
12 août 2006 à 19:38
Avec les sockets peut-être. C'est pas les exemples qui manque ici. Sinon, il existe wininet qui est asser simple d'utilisation mais reste quand même limité.

C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution
Forum de débats sur la programmation
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
12 août 2006 à 19:43
Oula attend. C'est ta caméra qui doit être considérer comme un client????? Oups. Dans ce cas, oublie ce que j'ai dit plus haut.

C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution
Forum de débats sur la programmation
0
thorodin Messages postés 22 Date d'inscription vendredi 17 février 2006 Statut Membre Dernière intervention 5 mai 2009
13 août 2006 à 12:35
merci de vos réponses.

La caméra doit prendre une image toute les 5 secondes (par exemple) et l'envoyer au PC.

Le truc que j'aimerai faire c d'envoyer des fichiers jpeg enregistré sur la caméra au PC.

J'ai déjà réalisé un prog avec dev c++ où j'envoie un top du PC et la caméra envoie un vecteur avec les luminances au PC et ensuite j'enregistre les images au format PGM, mais les images sont saturé, et la taille des fichiers est trop important.

Alors que sur la caméra il existe déjà une fonction qui enregistre les images au format jpeg et j'aimerai transféré automatiquement ses fichiers par ethernet.

est ce que que je dois "ouvrir" le fichier jpeg pour envoyer les valeurs ou est ce que c possible de transférer direct le fichier.

Merci de vos réactions.
0
Utilisateur anonyme
13 août 2006 à 15:27
Tu dois transferer les images en t'aidant des sockets.
Je te donnes en gros les étapes:
Il faut savoir ouvrir un fichier( exemple avec fopen ...) mettre une partie du fichier dans un buffer d'environ de 1024 octect puis l'envoyer par les socket puis les 1024 octect suivant ainsi de suite.
Et de l'autre coté il creer un nouveau fichier et il y colle les buffers recus les un aprés les autres petit a petit, et au final il a l'image entiere.

Au  préalable il aurait peut-etre fallu transmettre le nom du fichier envoyé sa taille, et déterminé la taille du dernié buffer car le fichier n'est pas obligatoirement un multiple de 1024 : / 

J'ai codé une fonction pour envoyé des fichiers et une autres qui les recois mais c'est mal codé je trouve il y avait un moyen de mieu codé...mais bon ca marche alors si elle t'interesse donne ton e-mail
MaLaDeDeDe 97one 
0
cs_max12 Messages postés 1491 Date d'inscription dimanche 19 novembre 2000 Statut Modérateur Dernière intervention 7 juillet 2014
15 août 2006 à 17:40
J'ai cru comprendre que tu voulais transférer ton JPEG par socket sans enregistrer un fichier et ensuite le réouvrir pour l'envoie. J'ai chercher et si tu utilises les fonctions fournis avec ta cam tu ne pourra pas, seule solution serait de convertir l'image directement en mémoire et l'envoyer. Dans un tel cas tu peux toujours te faire un algorithme de compression maison (LZW). Si tu prends la solution du fichier temporaire il y a une API pour envoyer un fichier par socket ... TransmitFile il me semble.

A+

http://vbaddons.free.fr
Cégep Lévis
0
thorodin Messages postés 22 Date d'inscription vendredi 17 février 2006 Statut Membre Dernière intervention 5 mai 2009
18 août 2006 à 08:53
voila je crois que j'ai trouvé mon problème mais je sais pas comment le résoudre.

quand j'enregiste une jpeg sur la caméra et que je la transfère par filezilla  le fichier  édité  avec  hexedit  donne (pour la première ligne) :

ff d8 ff e0 00 10 4a 46 49 46 00 01 01 00 00  01

(dans ce cas l'image est bonne)
 
Quand j'ouvre le fichier et que je le transfère par socket, j'ai pour la première ligne :

ff d8 ff e0 10 4a 46 49 46 01 01 01 01 ff db 43

=> il n'écrit pas les octets à 00!!!

voila grosso modo mon code

char*image = (char*)malloc(sizeof(unsigned char)*22133) ;
memset(image,0,22133) ;

    count=recv(csock,(char *)image,22133,0);
    printf("Count=%d",count);
    for (y = 0; y <22133; y++)
      { 
                    sprintf(buf,"%c",(unsigned char)image[y]);
                    put_header_line(file,buf); 
      }

Si quelqu'un peut aider, un lorrain dans le désarroi !
0
cs_max12 Messages postés 1491 Date d'inscription dimanche 19 novembre 2000 Statut Modérateur Dernière intervention 7 juillet 2014
18 août 2006 à 23:43
C'est parfaitement normal que sa ne fonctionne pas, quand tu transfères des fichiers tu dois éviter les fonctions de chaine de caractère (en l'occurence sprintf) ces fonctions sont conçus spécifiquement pour ignorer les 0 (une norme du C). Donc travaille directement avec des tableaux et évite toute fonctions de chaine et sa va fonctionner #1.

A+

http://vbaddons.free.fr
Cégep Lévis
0
Rejoignez-nous