Bonjour,
Mon client(mobile phone) demande au serveur des pixels. Le serveur renvoie sous forme HTTP des pixels. Sur le serveur je faisais avec les bonnes initialisations des variables

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
Image image;
source = new MemoryImageSource(width,height,pixels,0,width);
image= Toolkit.getDefaultToolkit().createImage(source);
A partir de cette image je l'affiche sur le serveur est la qualite est bonne.
En revanche sur le client la qualite est degueulasse. Je m'attendais a un petit deficit de qualite mais a ce point la !

Pour recuperer lles pixels je fais : il y a beaucoup de code donc si vous comprenez pas c'est pas grave. Car normalement cette facon de marche a fait ses preuves pour d'autres images.

J'ai recuperer les pixels de facon differente que je fais d'habitude.
D'habitude je faisais int c=bimage.getRGB(x,y); pour recuperer les pixels.
La methode que j'ai utilise ici est une methode adapte pour recuperer des pixels d'une image 3d. Malheureusement l'image 3d sur le mobile est degueulasse. Vous me suivez ? Bon sauter ce bout de code si vous comprenez pas
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 
byte[] buf = new byte[65535];	// Must be an even multiple of 3 !!
	//int maxB;
	//maxB=width*height*samplesPerPixel;
	System.out.println("ServerConnection::Do_imageThreeDRequest() :test");
	//byte[] buf = new byte[width*height*samplesPerPixel];
	int bytesRead=0;
	int currentSample=0; // 0=Red, 1=Green, 2=Blue
	argb[0] = 0;
 
	do
	{
		try
		{
			int n;
			while(bis.available() == 0)
			{
				Thread.yield();
			}
//LogClient.LogMessage("bis.available()="+bis.available());
				if ((n = bis.read(buf,0,Math.min(65535,bis.available()))) != -1)		// Regular blocking read doesn't work on Nokia !!
		//	if ((n = bis.read(buf,0,Math.min(maxB,bis.available()))) != -1)
			{
				bytesRead += n;
//LogClient.LogMessage("read "+n+" bytes (+"+bytesRead+" in total)");
				for (int i=0 ; i < n ; i++)
				{
					//System.out.println("pixels = buf["+i+"]= "+buf[i]);
					if (samplesPerPixel == 3)
					{
						// Colour image...separate Red, Green and Blue components
						// All Java variables are "bigendian" so it is OK to construct ARGB value like this
						argb[currentPixelNo] = (argb[currentPixelNo] << 8) | (buf[i] + 128);
						if (++currentSample == 3)	// Red -> Green -> Blue...
						{
							currentSample=0;	// ...and Back to Red
							if (++currentPixelNo < argb.length)
							{
								// Zero the next pixel
								argb[currentPixelNo] = 0;
 
							}
						}
					else if (samplesPerPixel == 1)
					{
						// Monochrome image...Red==Green==Blue
						argb[currentPixelNo++] = ((buf[i] + 128) << 16) | ((buf[i] + 128) << 8) | (buf[i] + 128);
					}
//beaucoup d'exceptions
 
}while(bytesRead < contentLength);
Une fois les pixels recuperer je fais simplement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
Image immutableImg = Image.createRGBImage(argb,req.getWidth(),req.getHeight(),false);
	argb=null;
pour recuperer une image qui est malheureusement de mauvaise qualite.
Celui qui a lu jusque la merci !!
C'est un domaine assez specifique je ne m'attends pas a beaucoup de reponses donc merci ceux qui ont l'audace de repondre "!!