conversion buffer unsigned char* -> int* d'images
Bonjour,
je suis désolé je ne trouve pas comment convertir un pointeur unsigned char* en int*.
Je dispose en fait d'un buffer unsigned char* que je récupère depuis une dll externe et qui donne le rendu d'une image c++.
Dans mon application principale, je voudrais faire passer cette image à un code Java en passant par une méthode JNI retournant un IntBuffer donc du coté C++ retournant un jint*.
Évidemment mes deux buffers sont initialisés à la même hauteur et largeur.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
// on récupère le pointeur du IntBuffer : jobject javaBuffer
jint *jniBuffer = (jint *)pEnv->GetDirectBufferAddress(javaBuffer);
// on récupère le buffer de la dll
unsigned char* dllBuffer = new unsigned char[height * width * (4 * sizeof(unsigned char))];
dllBuffer = getDllBuffer(width, height);
// Premier Pb :
cout << strlen((char*)jniBuffer ) << endl; // retourne 0
cout << strlen((char*)dllBuffer ) << endl; // retourne 3090
// Je suppose que ce sont les valeurs du premier nombre des buffers ?
// 2eme Pb :
memcpy(jniBuffer , dllBuffer , sizeof(unsigned char)*4*size);
// ne fonctionne pas
// autre méthode qui ne fonctionne pas
jint *dllBuffer = new jint[width * height];
for(int y = 0; y < width; y++)
for(int x = 0; x < height; x++)
{
jniBuffer [x + width * y] = (jint)dllBuffer [x];
} |
Comment donc copier les bonnes valeurs du buffer de la dll vers le buffer c++ pour java ?
Désolé c'est peut être une question très idiote mais qu'est ce que ça prend le chou ! :aie:
merci