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