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 :

Afficher une image web


Sujet :

Java ME

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 19
    Par défaut Afficher une image web
    Bonjour,
    Je programme une petite application J2ME, et j'ai besoin d'afficher une image web dans un canvas.
    J'arrive a afficher une image local grâce à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g.drawImage(Image.createImage("image.png"), 0, 0, Graphics.VCENTER | Graphics.HCENTER);

    Donc pour une image distante j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    InputStream is = null;
    dwlImage();
    ......
    g.drawImage(Image.createImage(is), 0, 0, Graphics.VCENTER | Graphics.HCENTER);
    ......
    Avec cette méthode :

    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     public void dwlImage() throws Exception
    	  {
    		 System.out.println("chargement.....");
     
    	  	new Thread(new Runnable(){
    	  	   public void run()
    	  	   {
     
    	  		    String url = "http://site/fichier.png";
    	  			HttpConnection c = null;
     
    	  			int rc;
     
    	  			try {
    	  			c = (HttpConnection)Connector.open(url);
     
    	  			// Getting the response code will open the connection,
    	  			// send the request, and read the HTTP response headers.
    	  			// The headers are stored until requested.
    	  			rc = c.getResponseCode();
    	  			if (rc != HttpConnection.HTTP_OK) {
    	  			throw new IOException("HTTP response code: " + rc);
    	  			}
     
    	  			is = c.openInputStream();
     
    	  			// Get the ContentType
    	  			String type = c.getType();
     
    	  			// Get the length and process the data
    	  			int len = (int)c.getLength();
    	  			if (len > 0) {
    	  			int actual = 0;
    	  			int bytesread = 0 ;
    	  			byte[] data = new byte[len];
    	  			while ((bytesread != len) && (actual != -1)) {
    	  			actual = is.read(data, bytesread, len - bytesread);
    	  			bytesread += actual;
    	  			}
    	  			} else {
    	  			int ch;
    	  			while ((ch = is.read()) != -1) {
     
    	  			}
    	  			}
    	  			} catch (ClassCastException e) {
    	  			throw new IllegalArgumentException("Not an HTTP URL");
    	  			} catch (IOException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				} finally {
     
    	  			if (c != null)
    					try {
    						c.close();
    					} catch (IOException e) {
    						// TODO Auto-generated catch block
    						e.printStackTrace();
    					}
    	  			}
     
     
    	  	   }
    	  	   }).start();
     
    	  }
    Et sa plante....
    Je débute en J2ME alors je comprend rien.
    Si quelqu'un peut m'aider svp.
    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 19

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Février 2008
    Messages
    658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 658
    Par défaut
    Je crois que ce bout de code peut t'aider gravement bien car ca marche chez moi

    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
    public Image getImage(String url)
    	{
    		DataInputStream is = null;
            StringBuffer sb = new StringBuffer();
            Image img= null;
            try 
            {
                HttpConnection c = (HttpConnection) Connector.open(url);
                int len = (int)c.getLength();
                if (len > 0) 
                {
                    is = c.openDataInputStream();
                    byte[] data = new byte[len];
                    is.readFully(data);
                    img = Image.createImage(data, 0, len);
                    return img;
                } 
                else 
                {
                    showAlert("length is null");                
                }
                is.close();
                c.close();
             } 
             catch (Exception e) 
             {
                 e.printStackTrace();
                 showAlert(e.getMessage());
                 return null;
             }   
             return null;              
    	}
     
    	private void showAlert(String err) 
        {    
                Alert a = new Alert("");
                a.setString(err);
                a.setTimeout(Alert.FOREVER);
                //display.setCurrent(a);
        }

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mai 2007
    Messages : 51
    Par défaut
    Sur certain téléphone, tu as des problème quand tu récupère la taille avec c.getLength();
    Tu peut essayer de lire le premier caractère pour voir s'il y a quelque chose a lire.

    puis de lire caractère par caractère jusqu'à la fin.

    Sinon, tu peut aussi essayer le code la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    try {
       HttpConnection c = (HttpConnection)Connector.open(strUrlImage  );
       int rc = ((HttpConnection)c).getResponseCode();
       if(rc != HttpConnection.HTTP_OK) {
             throw new IOException("HTTP response code: " + rc);
       }
       InputStream is = c.openInputStream();
       Image img = Image.createImage(is);
       } catch (Exception e) {
             //ce que t'as besoin en cas d'erreur
       }
    Voila

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher une image web sur mon application
    Par ciolvic dans le forum Android
    Réponses: 6
    Dernier message: 04/02/2013, 17h34
  2. afficher une image 3D dans ma page web
    Par ghadroud dans le forum Calcul scientifique
    Réponses: 1
    Dernier message: 16/01/2009, 19h33
  3. Afficher une image d'une base de données sur une page web
    Par tortuegenie dans le forum ASP.NET
    Réponses: 2
    Dernier message: 10/10/2008, 14h11
  4. Comment afficher une image dans une page web
    Par hamma2 dans le forum ASP.NET
    Réponses: 13
    Dernier message: 23/04/2008, 14h34
  5. Afficher une image du Web
    Par myke38 dans le forum C++Builder
    Réponses: 9
    Dernier message: 22/03/2007, 21h12

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