Desarrollo en java con JNI
EL otro día tenía problemas al querer procesar una imagen en c.
El problema es que se lo imagen la tenia en java y se la tenia
que enviar a una dll mediante JNI.
public class ImagenJava
{
private native Image getImagenProcesada(byte[] bimg);
static {
try
{
System.loadLibrary("TokenC");
}
catch (UnsatisfiedLinkError e)
{
System.err.println("Error al cargar la libreria nativa de C" + e);
System.exit(1);
}
}
public Image getTokenFromByteArray(byte[] imgData)
{
TokenResult rtoken=getToken(imgData);
return rtoken;
}
}
Despues mediante la función de javah -jni creamos nuestra cabecera que será el archivo .h que debemos de impementar en c.
Nuestro archivo quedara algo parecido a esto:
JNIEXPORT jobject JNICALL Java_getImagen (JNIEnv *, jobject, jbyteArray);
Ahora en nuestro archivo .c debemos tener el método con la misma firma que el .h y para obtener el arreglo de bytes en c se hace como sigue;
// Obtener imagen desde los parametros
input_img =(const void *)(*env)->GetByteArrayElements (env,jimg,NULL);
jimg_size =(*env)->GetArrayLength(env,jimg);
y con esto ya tenemos nuestro arreglo de bytes en c para procesarla.
0 comentarios:
Publicar un comentario