IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java ME Discussion :

Creer une image avec come info des pixels


Sujet :

Java ME

  1. #1
    Battosaiii
    Invité(e)
    Par défaut Creer une image avec come info des pixels
    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 "!!

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 137
    Points : 158
    Points
    158
    Par défaut Question bête
    Et pourquoi ne pas renvoyer du png directement ?

    Ca passe compressé sur le réseau et tu es sûr que ca serait traité correctement par ton téléphone.

  3. #3
    Battosaiii
    Invité(e)
    Par défaut
    Je vais essayer de t'expliquer clairement ce que je fais sur le serveur .
    J'extraie ,d'un programme qui genere des images 3d, les pixels de ces images. Je les envoie ensuite sur le mobile.
    L'utilisateur a l'illusion de manipuler un objet 3d sur son tel portable. En realite c'est une image 2d extraite d'un objet 3d du serveur ... Est ce clair ? .
    Les pixels que je recupere je les envoie directement via HTTP un par un. Je n'envoie pas d'image complete directement car je ne connais pas de methodes pour le faire ! Envoyer directement une imagede type bufferedimage,Image,PNG n'est pas possible car on ne peut envoyer des objets serialises avec lJ2ME. On ne peut pas non plus envoyer de XML. Voila

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 137
    Points : 158
    Points
    158
    Par défaut
    Citation Envoyé par Battosaiii
    Je n'envoie pas d'image complete directement car je ne connais pas de methodes pour le faire !
    Tu peux peut-être renvoyer de ta servlet un content image/png que tu a créé a partir de ton image AWT en utilisant le PNGImageEncoder (y en a un avec Batik)
    Citation Envoyé par Battosaiii
    On ne peut pas non plus envoyer de XML.
    Si si ... voir ksoap et kxml suggéré par Tipoete dernièrement

Discussions similaires

  1. [image] Générer une image avec des pixels non rectangulaires
    Par Jerome Briot dans le forum Téléchargez
    Réponses: 12
    Dernier message: 31/10/2014, 12h43
  2. Réponses: 0
    Dernier message: 29/12/2011, 14h48
  3. creer une image avec Magick++
    Par boboz2 dans le forum Bibliothèques
    Réponses: 3
    Dernier message: 27/01/2009, 09h28
  4. [Débutante] Afficher une image avec 2 données par pixel
    Par diana82 dans le forum Traitement d'images
    Réponses: 8
    Dernier message: 19/09/2007, 01h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo