bonjour,
je travail sur une application qui devra se connecté à un scanner.pour çela j'ai charger la dll du scanner a mon code pour pouvoir accéder a ces methodes.j'ai un soucis au niveau de la récupération des images scannées de la mémoire.voila mon code

déclaration partie c++:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
extern int APIENTRY LSGetDocDataEx(short	hConnect,
								   HWND				hWnd,
								   int				ImageFormat,
								   unsigned long	*NrDoc,
								   LPSTR			FilenameFront,
								   LPSTR			FilenameRear,
								   LPSTR			FilenameFront2,
								   LPSTR			FilenameRear2,
								   HANDLE			*FrontImage,
								   int				*SizeFront,
								   HANDLE			*RearImage,
								   int				*SizeRear,
								   HANDLE			*FrontImage2,
								   int				*SizeFront2,
								   HANDLE			*RearImage2,
								   int				*SizeRear2,
								   LPSTR			CodelineSW,
								   LPSTR			CodelineHW,
								   LPSTR			Barcode,
								   long				*NrPrinted,
								   long				Reserved5,		// not used must be 0
								   LPVOID			Reserved6);		// not used must be NULL
partie java:
déclaration
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int LSGetDocDataEx(short hConnect,
								   int				hWnd,
								   int				ImageFormat,
								   NativeLong             NrDoc,
								   Pointer			FilenameFront,
								   Pointer			FilenameRear,
								   Pointer			FilenameFront2,
								   Pointer			FilenameRear2,
								   HANDLEByReference FrontImage,
								   IntByReference    SizeFront,
								   HANDLEByReference RearImage,
								   IntByReference   SizeRear,
								   HANDLEByReference FrontImage2,
								   IntByReference		SizeFront2,
								   HANDLEByReference RearImage2,
								   IntByReference   SizeRear2,
								   byte[]			CodelineSW,
								   byte[]			CodelineHW,
								   byte[]			Barcode,
								   LongByReference  NrPrinted,
								   long				Reserved5,		// not used must be 0
								   Pointer			Reserved6);		// not used must be NULL
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
reply=LsApi.instance.LSGetDocDataEx(hconnect.getValue(),0,0,
                   NrDoc.getPointer().getNativeLong(0),
                   FilenameFront,
                   FilenameBack,
                   FilenameFront2,
                   FilenameBack2, 
                   FrontImage,
                   SizeFront,
                   RearImage,
                   SizeRear,
                   FrontImage2,
                   SizeFront2,
                   null,
                   izeRear2,
                   CodelineSW,
                   CodelineHW, 
                   Barcode,  
                   NrPrinted,
                   0, 
                   null);
m.CheckReply(reply, "LSGetDocDataEX");
 
 
   long address = FrontImage.getPointer().getNativeLong(0).longValue(); 
	Pointer pp = new Pointer(address);
  	byte data[]=pp.getByteArray(0,(int)(SizeFront.getValue()/10)); 
 
 
		try {
			BufferedImage img = ImageIO.read(new ByteArrayInputStream(data));
			System.out.println(img.getWidth() + ",," + img.getHeight()); 
			ImageIO.write(img,"BMP", new File("D:/image3.BMP")); 
			System.out.println("image créer");
		}
		catch (IOException e) {
			e.printStackTrace();
		}
la variable FrontImage représente ointer to a handle where will be returned the handle of memory buffer containing the front side image of the requested document, in DIB format.
SizeFront=la longeur de l'image en millimétres.

ce code me retourn une exception de type : Exception in thread "main" java.lang.NullPointerException
at NativeImplementation.Main.main(Main.java:546)

y'a t-il une solution de savoir la longeur du byte[] du pixel apartir de la longeur de l'image???
sinon une autre maniére pour récupérer l'image sans passé vers le byte[]!!!
merci d'avance