Partage
  • Partager sur Facebook
  • Partager sur Twitter

[JAVA] réseaux

récupérer une image

Anonyme
    20 novembre 2006 à 21:04:06

    Bonjour, j'aimerais savoir comment faire pour récupérer sur un site web une image a partir de son lien ?
    le tout en java


    merci
    • Partager sur Facebook
    • Partager sur Twitter
      21 novembre 2006 à 7:50:15

      Je pense qu'il y a une histoire de socket... mais je ne suis pas sûr!
      • Partager sur Facebook
      • Partager sur Twitter
        21 novembre 2006 à 8:29:08

        new Image(new Url("http://www.monsite.com/monimage.jpg"));
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          21 novembre 2006 à 18:55:11

          Citation : makki_katta


          new Image(new Url("http://www.monsite.com/monimage.jpg"));



          Ta solution ne marche malheureusement pas. ne constructeur


          new Image(URL);


          n'existe pas.
          • Partager sur Facebook
          • Partager sur Twitter
            22 novembre 2006 à 10:50:29


            try {
            Image img = (new ImageIcon(new URL("ton URL"))).getImage()
            }
            catch (Exception e) {
            // image non chargée
            }


            sans oublier


            import java.awt.*;
            import javax.swing.*;
            import java.net.*;


            autant pour moi !!!
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              22 novembre 2006 à 12:29:10

              D'accord mais après j'ai besoin de la stocker dans un fichier.

              donc je fait :



                              try {
                                      ImageIO.write(monImage, "gif", new File("fd.gif"));
                              }catch (Exception e) {
                                     
                              }


              monImage type Image

              Mais ca ne marche pas. Comment faire donc ?

              merci
              • Partager sur Facebook
              • Partager sur Twitter
                22 novembre 2006 à 16:29:09

                Bon je ne suit pas un spécialiste de ImageIO mais en lisant la doc je pense pouvoir t'aider.


                try {
                Image img = (new ImageIcon(new URL("ton URL"))).getImage()
                }
                catch (Exception e) {
                // image non chargée
                }


                Il va te falloir obtenir une BufferedImage
                je ne sais pas si :

                BufferedImage bufimg = (BufferedImage) img;


                peut marcher, sinon:


                while (img.getHeight(null)<0 && img.getWidth(null)<0) {
                // attendre que l'image se charge
                }
                BufferedImage bufimg = new BufferedImage(img.getWidth(null), img.getHeight(null), TYPE);
                // copie
                (bufimg.getGraphics()).drawImg(img, 0, 0, null);


                et tu remplace TYPE par la constante qui te convient le mieu ici http://java.sun.com/j2se/1.4.2/docs/api/java/awt/image/BufferedImage.html
                si c'est du .gif que tu charge je pense qu'il faut prendre : TYPE_BYTE_INDEXED sinon TYPE_INT_RGB a voir

                ensuite:


                try {
                 ImageIO.write((RenderedImage)bufimg, "gif", new File("fd.gif"));
                }
                catch (Exception e) {
                }


                à essayer, (je sait pas si null ca passe la ou je les ai mis, d'habitude je met this pcq la class dans laquelle j'utilise ces methodes héritent d'un élément graphique...
                • Partager sur Facebook
                • Partager sur Twitter
                  23 novembre 2006 à 13:42:00

                  Citation : @Strato@

                  Mais ca ne marche pas. Comment faire donc ?



                  Pourquoi absolument passer par des méthodes spécifiques aux images?
                  Je vais te donner une méthode qui marche pour tout type de fichier accessible depuis une url (pdf, txt, doc, image, mp3...), ça le télécharge et ça crée un fichier du même nom dans le répertoire courant:


                  try {
                          String adresse = "http://monsite.com/image.jpg";
                          URL url = new URL(adresse);
                          // on se connecte au serveur
                          URLConnection uc = url.openConnection();
                          uc.connect();
                                         
                          // OPTIONNEL: récuperer le type du fichier et son nom sur le serveur
                          System.out.println("Type : "+ uc.getContentType());
                          String nom = url.getFile().substring(url.getFile().lastIndexOf('/') +1);
                          System.out.println("Nom :" + nom);
                                         
                          // Flux pour lire et écrire le fichier
                          InputStream is = uc.getInputStream();
                          FileOutputStream fos = new FileOutputStream(nom);

                          // précaution: si la taille est incorrecte, on arrête
                          if (uc.getContentLength() == -1)
                                  throw new IOException("Taille incorrecte");
                         
                          // on lit les octets du fichier un à un depuis le net
                          // et on les écrit au fur et à mesure dans le fichier
                          for (int i = 0; i < uc.getContentLength(); i++) {
                                  fos.write(is.read());
                          }
                         
                          // important: fermer les flux
                          fos.flush();
                          fos.close();
                          is.close();
                         
                          System.out.println("Fichier téléchargé");

                  } catch (Exception e) {
                          e.printStackTrace();
                          System.exit(0);
                  }


                  Ca peut être long pour les gros fichiers et l'application peut sembler bloquée. Les threads peuvent être utiles pour remédier à ça.
                  • Partager sur Facebook
                  • Partager sur Twitter

                  [JAVA] réseaux

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown