passage d'un tableau dans DLL et retour ? c'est encore moi! [Java] - Programmation
Marsh Posté le 23-02-2002 à 20:38:34
Pour ma part je suis pas très sur de :
raster.setPixels(0,0,image.getWidth(),image.getHeight(),procesImage(pixels));
et du truc en C.
REM ma boucle met toute la chaîne à 0?
Ben c?est un test?. Koi ?
Voilà mais je commence à aimer le JAVA qui l?aurai cru !!
Marsh Posté le 25-02-2002 à 19:08:24
Bon je résume mon truc.
Je veux récuperer un tableau de int de la DLL.
Voila comment on fait ?????
Marsh Posté le 26-02-2002 à 00:05:14
je t'aiderai volontier, mais je n'y connais vraiment rien en JNI. Ca te feras toujours un up ...
Marsh Posté le 26-02-2002 à 00:47:51
Pour ma part, c'est mort. Je veux dire qu'à moins de te faire le projet (j'ai pas le temps), je ne peux pas aider. JNI, je l'ai bossé la première pour te filer un coup de main et c'est tout. Il va falloir trouver plus doué. Encore désolé.
Marsh Posté le 23-02-2002 à 20:27:34
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]