Je me bats avec le transfert d'un simple fichier jpeg dans une balise ID3v2 de C++ sur une socket TCP java (Android). La bibliothèque "taglib" propose d'extraire ce fichier et je suis capable de sauvegarder le fichier jpeg sous un nouveau fichier.transfert jpeg de C++ pour Android (java)
La fonction d'envoi ressemble à ceci
char *parameter_full = new char[f3->picture().size()+2];
sprintf(parameter_full,"%s\n\0",f3->picture().data());
// send
result = send(c,parameter_full,strlen(parameter_full),0);
delete[] parameter_full;
où
F3-> image(). Les données() renvoie un pointeur sur la structure interne de données (il retourne char *) et F3- > picture(). size() renvoie la taille du tableau.
Puis Android reçoit avec
String imageString = inFromServer.readLine();
byte[] imageBytes = imageString.getBytes();
Bitmap cover = BitmapFactory.decodeByteArray(imageBytes,0,imageBytes.length);
Mais en quelque sorte decodeByteArray retourne toujours nulle. Mon idée est que Java ne reçoit pas l'image correctement car imageString ne comporte que 4 caractères ... alors que le fichier jpeg extrait a une taille de 12,7 Ko. Mais qu'est-ce qui a mal tourné?
Martin
Ne pas le lire en chaîne. Ce n'est pas une chaîne. Lisez-le comme les octets bruts. –