Et voilà on y a tous cru !!!!
Mais non il me reste encore un truc qui marche pas!!!
Résumé des épisodes précédents :
Mon projet est de créer une application java qui affiche une image :
Puis une DLL se charge des transformations à apporter a cette image.
L?interface marche et je sais créer la DLL. (merci a tous )
La DLL affiche un « Hello World » maintenant je dois lui passer l?image sous forme d?un tableau.
Apparemment le tableau arrive jusqu'à la DLL puisque je peux afficher la longueur correct du tableau 4*largeur*hauteur (en pixel).
Mais après c?est la merde. Et impossible de trouver le bon tutorial chez SUN !!!!
Alors voilà le .c
#include "jni.h"
#include "ImageProcessingPanel.h"
#include <stdio.h>
JNIEXPORT void JNICALL Java_ImageProcessingPanel_displayHelloWorld
(JNIEnv *env, jobject obj)
{
printf("Hello world!\n" );
return;
}
JNIEXPORT jintArray JNICALL Java_ImageProcessingPanel_procesImage
(JNIEnv *env, jobject obj, jintArray t)
{
int i;
jintArray imgt;
jsize len = (*env)->GetArrayLength(env,t);
jint *img =(*env)->GetIntArrayElements(env,t,0);
for (i=0; i <= len ;i++)
{
img[i]=0;
}
imgt = (*env)->NewIntArray(env, *img);
(*env)->ReleaseIntArrayElements(env,t,img,0);
printf("%d\n",len);
printf("%d\n",img);
return imgt;
}
Et le java :
class ImageProcessingPanel extends JPanel
{
public native void displayHelloWorld();
public native int[] procesImage(int t[]);
static
{
System.loadLibrary("imgp" );
}
????.
Et
void dllhello()
{
displayHelloWorld();
}
void dllPImage()
{
WritableRaster raster = image.getRaster();
System.out.println(image.getColorModel());
int[] pixels = new int[4 * image.getWidth() * image.getHeight()];
raster.getPixels(0,0,image.getWidth(),image.getHeight(),pixels);
raster.setPixels(0,0,image.getWidth(),image.getHeight(),procesImage(pixels));
repaint();
}
?????.
Et les sources complètes :
http://perso.club-internet.fr/jmgary/Projet_Java.rar
[jfdsdjhfuetppo]--Message édité par Babekiller--[/jfdsdjhfuetppo]