Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1738 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  [Objective-C] Création d'image reçue via socket

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Objective-C] Création d'image reçue via socket

n°2073458
Akumetsu
Posté le 03-05-2011 à 11:01:26  profilanswer
 

Bonjour,  bonsoir,
 
Je vous énonce vite fait le problème, s'il y a besoin de plus d'informations n'hésitez pas à les demander :
 
J'envoie, via des socket en C en broadcast (sendto(...)), des données images sous la forme RVB en hexa dans une chaine chaine de caractère (1 pixel = "7F 53 00" par exemple). Les données sont bien reçues à l'application Objective-C mais je n'arrive pas à créer d'image à partir de ces données.  
 
Quelques hypothèses me sont venus :
 

  • Dois-je plutôt envoyer des BYTE plutôt qu'une chaine de caractère ? (J'ai tenté maintes fois de le faire sans succès probant puisque la fonction sendto veut un char*).
  • Les données à envoyer sont-elles correct en envoyant chaque couleur espacé d'un espace (pléonasme) ?
  • Créer un fichier fpp en Objective-C puis le convertir en PNG, JPEG (ce que je faisais sur un linux pour tester)... voire l'afficher directement ?
  • Il faut les stocker dans un array de type NSdata ?


Un très léger aperçu du code pour envoyer chaque pixel en langage C :  

Code :
  1. #include ...
  2. #define BYTE unsigned char
  3. int Envoyer()
  4. {
  5. static BYTE red, green, blue ;
  6. char buffer[8192] ;
  7. sockfd = socket(AF_INET, SOCK_DGRAM, 0) ;
  8. // setsockopt, bind...
  9. sprintf(buffer, "%02x %02x %02x", red, green, blue) ;    // buffer = "RR VV BB"
  10. SendBroadcast(sockfd, buffer) ;
  11. }
  12. int SendBroadcast(int sockfd, char* buffer) {
  13. if ((sendto(sockfd, buffer, strlen(buffer), MSG_DONTROUTE,
  14.    (struct sockaddr *)&their_addr, sizeof(their_addr))) == -1) {
  15.  return -1;
  16. }
  17.     return 0;
  18. }


 
Merci d'avance. :jap:


Message édité par Akumetsu le 03-05-2011 à 14:04:46
mood
Publicité
Posté le 03-05-2011 à 11:01:26  profilanswer
 

n°2073845
Akumetsu
Posté le 04-05-2011 à 16:39:40  profilanswer
 

J'ai finalement réussi à envoyer des BYTEs (foutu pointeur ! :fou: ).  
 

Code :
  1. int SendBroadcast(int sockfd, BYTE buffer) {
  2. if ((sendto(sockfd, (char *)&buffer, sizeof(buffer), MSG_DONTROUTE,
  3.    (struct sockaddr *)&their_addr, sizeof(their_addr))) == -1) {
  4.  //fprintf(fdebug, "\nsendto\n " );
  5.  //perror("sendto" );
  6.  return -1;
  7. }
  8.     return 0;
  9. }


 
Je renvoie donc un tableau de BYTEs contenant une ligne d'une image :  
 

Code :
  1. static BYTE buffer[8192] ;
  2. buffer[++index]  = red ;
  3. buffer[++index]  = green ;
  4. buffer[++index]  = blue ;
  5. etc....
  6. SendBroadcast(sockfd, *buffer) ;


 
Y a pas à tortiller, c'est tout de même bien plus rapide qu'une chaine de caractère de 9 octets envoyée 33600 fois. :nerd:  
 
Comment créer une image à partir de ces données en Objective-C ? (1 pixel = \xff\xa5\xb7).


Message édité par Akumetsu le 05-05-2011 à 12:27:24

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  [Objective-C] Création d'image reçue via socket

 

Sujets relatifs
[OpenGL] Effet de distorsion de l'imageCopie d'octet en C
Aider Moi sur Un Exercice En Language C svpbesoin d'aide en C++ ou VB6 svp ma soutenance dans 20 jour :""(
[C++] Accéder à un service Windows (message personnalisé)[C++] Manipuler un logiciel de simulation
Probleme en Programmation C :(Exception code in C ???
[C] pointeurs de pointeurs [RESOLU]comment utiliser la bibliothèque Faxcom ? VBA & C++
Plus de sujets relatifs à : [Objective-C] Création d'image reçue via socket


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR