JNI - Obtenir une image Java à partir d'une image Windows

JNI - Obtenir une image Java à partir d'une image Windows - Java - Programmation

Marsh Posté le 05-06-2003 à 17:24:33    

Je doute qu'ici qui que ce soit puisse m'aider là dessus, mais bon, essayons toujours...
Alors voila, depuis une dll C, je génère une image (ou plutôt, je récupère une image générée par un code obscure). Etant sous windows, cette image est au format "standard" des images sous windows, à savoir : HBitmap (qui n'est pas à proprement parler un format, mais bref, on va se permettre de considérer que si). Je cherche, depuis ce HBitmap, à générer un image Java (classe java.awt.image.RenderedImage). Je suis à peu près sur que c'est possible, puisque l'awt comporte une partie native, c'est à peu près sur qu'il bosse avec des HBitmap, mais je n'arrive pas trop pour l'instant à trouver comme faire ce dont j'ai besoin.
En Bref : je voudrais obtenir une Image Java (RenderedIMage), depuis une image C Windows (HBitmap). Quelqu'un sait il qqch là dessus ?

Reply

Marsh Posté le 05-06-2003 à 17:24:33   

Reply

Marsh Posté le 06-06-2003 à 11:13:59    

Heu, je pense pas que t'ai directementune fonction java qui te fasse ça. Ce que tu peux faire c générer un tableau d'octets à partir de ton HBitmap (me semble que ça se fait mais c à vérifier) qui va représenter ton image. Ensuite t'as plus qu'à cerhcer si y a un moyen de créer ton objet java à partir de ça.


---------------
Le Tyran
Reply

Marsh Posté le 06-06-2003 à 12:04:58    

Moi je pense qu'il existe déja des fonction JNI qui font ça. Parce que, à ma connaissance, sous windows, pour afficher quoi que ce siot de graphique, il doit être au format HBitmap (je suis pas sur à 100% mais je pense)

Reply

Marsh Posté le 06-06-2003 à 12:27:49    

SAlut El Gringo...
 
Rien a voir avec ton poste...une boite veut valider mes references et me demande des contacts de mes anciens responsables.
Je me rappel plus le nom d'eric :non:  
 
Peut tu me l'envoyer par mail à vpenalva@chello.fr
 
Sympa merci
Bientot!!

Reply

Marsh Posté le 06-06-2003 à 12:40:46    

El_gringo a écrit :

Moi je pense qu'il existe déja des fonction JNI qui font ça. Parce que, à ma connaissance, sous windows, pour afficher quoi que ce siot de graphique, il doit être au format HBitmap (je suis pas sur à 100% mais je pense)


 
Qq part en interne ouai, mais ça m'étonerais que tu y ai accés.


---------------
Le Tyran
Reply

Marsh Posté le 06-06-2003 à 14:06:23    

LetoII a écrit :


 
Qq part en interne ouai, mais ça m'étonerais que tu y ai accés.


 
Ouais, en interne, c'est sur que la JVM sait traiter les images HBitmap, et pour preuve :

Code :
  1. /*
  2. * Win32-specific declarations for AWT native interface.
  3. * See notes in jawt.h for an example of use.
  4. */
  5. typedef struct jawt_Win32DrawingSurfaceInfo {
  6.     /* Native window, DDB, or DIB handle */
  7.     union {
  8.         HWND hwnd;
  9.         HBITMAP hbitmap;
  10.         void* pbits;
  11.     };
  12.     /*
  13.      * This HDC should always be used instead of the HDC returned from
  14.      * BeginPaint() or any calls to GetDC().
  15.      */
  16.     HDC hdc;
  17.     HPALETTE hpalette;
  18. } JAWT_Win32DrawingSurfaceInfo;

 
 
Cette structure permet de dessiner dans une surface avec la JVM, depuis un pogramme C/C++.
L'image est décrite dans un HBitmap.
C'est terriblement frustrant, d'autant plus que je n'pense même pas pouvoir regarder les sources de ça, puisqu'elle doivent être compilées !!!  :cry:

Reply

Marsh Posté le 06-06-2003 à 14:13:09    

Hé, mais j'y pense, c'est peut être ça ma solution :  
si je trouve un moyen générer une RenderedImage représentant le contenu d'un Caneva, c'est gagné...

Reply

Marsh Posté le 07-06-2003 à 18:21:36    

un HBITMAP, c'est jamais qu'un pointeur vers une structure contenant un en-tete (BITMAPINFOHEADER ou un truc du genre) et un tableau d'octet représentant tes pixels. Donc je pense que le truc c'est d'essayer de récupérer les infos du header et le tableau d'octets pour refaire une image avec tout ça.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed