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.

posted under , |

0 comentarios:

Publicar un comentario

Entrada más reciente Entrada antigua Inicio
Con la tecnología de Blogger.
En este sitio esta enfocado a compartir el conocimiento y un poco de todo.

Followers


Recent Comments