перенести JPEG с C ++ на Android (Java) - PullRequest
3 голосов
/ 30 марта 2011

Я борюсь с переносом простого файла JPEG внутри тега ID3v2 из c ++ через сокет TCP в Java (Android).Библиотека "taglib" предлагает извлечь этот файл, и я могу сохранить JPEG в виде нового файла.

Функция отправки выглядит следующим образом

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;

, где

f3-> picture (). Data () возвращает указатель на внутреннюю структуру данных (возвращает символ*) и f3-> picture (). size () возвращает размер массива.

Затем Android получает его с

String imageString = inFromServer.readLine();
byte[] imageBytes = imageString.getBytes();
Bitmap cover = BitmapFactory.decodeByteArray(imageBytes,0,imageBytes.length);

Но каким-то образом decodeByteArray всегда возвращает ноль.Моя идея состоит в том, что Java не получает изображение правильно, потому что imageString состоит только из 4 символов ... в то время как извлеченный файл JPEG имеет размер 12,7 КБ.Но что пошло не так?

Мартин

1 Ответ

2 голосов
/ 30 марта 2011

Вы не должны использовать строковые функции в байтовых данных, потому что в качестве ограничителей строки принимаются 0 значений. Попробуйте изучить memcpy на стороне C ++, если вам нужно скопировать char*, а также byte[] функции чтения для InputStream на стороне Java.

...