Transfert fichier jpeg

Messages postés
22
Date d'inscription
vendredi 17 février 2006
Statut
Membre
Dernière intervention
5 mai 2009
-
Messages postés
1491
Date d'inscription
dimanche 19 novembre 2000
Statut
Modérateur
Dernière intervention
7 juillet 2014
-
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

Messages postés
3827
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
16 décembre 2021
46
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
Messages postés
332
Date d'inscription
mardi 12 juillet 2005
Statut
Membre
Dernière intervention
17 juillet 2010

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
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Membre
Dernière intervention
20 juin 2013
59
Message déplacé dans le bonne section !

<hr size="2" />VC# forever
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
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
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
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
Messages postés
22
Date d'inscription
vendredi 17 février 2006
Statut
Membre
Dernière intervention
5 mai 2009

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.

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 
Messages postés
1491
Date d'inscription
dimanche 19 novembre 2000
Statut
Modérateur
Dernière intervention
7 juillet 2014

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
Messages postés
22
Date d'inscription
vendredi 17 février 2006
Statut
Membre
Dernière intervention
5 mai 2009

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 !
Messages postés
1491
Date d'inscription
dimanche 19 novembre 2000
Statut
Modérateur
Dernière intervention
7 juillet 2014

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