Ouvrir une image depuis le disque dur

phenix22000 Messages postés 11 Date d'inscription jeudi 13 novembre 2008 Statut Membre Dernière intervention 28 mars 2012 - 26 mars 2012 à 12:33
cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 - 27 mars 2012 à 08:05
Bonjour,

je suis novice en Java, j'aimerais connaitre un moyen d'intégrer une image sur une page web depuis le disque dur local de l'utilisateur.
J'arrive à récupérer le nom de fichier sélectionné depuis une boite de dialogue javascript (type="file"), ou afficher une image sur le serveur...
J'ai signé mon applet afin qui l'application ait accès directement au contenu local, mais toujours rien :/ ...
Des pistes?

Merci.

voici le code que j'utilise:

import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Label;
import java.awt.event.*; 
import javax.imageio.*;
import javax.swing.*;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder; 
import java.lang.System;

// Graphics and Image Classes 
import java.awt.image.*;
import java.io.*; 
import java.io.File; 
import com.sun.image.codec.jpeg.*; 



public class helloworld extends Applet {

    StringBuffer buffer; 
    Graphics graph=null; 


    private Image image = null; // A la construction de notre objet, image est initialisé à null

    public void init() { 
        
        //System.setSecurityManager(null); 
        buffer = new StringBuffer(); 
        buffer.append("Ici l'Applet :"); 
        repaint(); 

}
    
    public void paint(Graphics g) {
        
        g.drawString( buffer.toString(),20,25); 
        graph=g;   
    
    } 
}

5 réponses

cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 12
26 mars 2012 à 12:51
si tu veux le faire via un applet, je te conseille d'utiliser avec ton applet un JFileChooser...
De la tu auras le fichier d'accès au fichier image et ensuite, en très simple, tu l'affiches via un JLabel auquel tu donnes une instance de ImageIcon faite avec le chemin d'accès...
0
phenix22000 Messages postés 11 Date d'inscription jeudi 13 novembre 2008 Statut Membre Dernière intervention 28 mars 2012
26 mars 2012 à 14:43
Je vais essayer ta méthode en attendant que j'ai un résultat satisfaisant..
J'ai finis par trouver ce code qui fonctionne plutôt bien mais pas comme je le souhaite exactement, j'ai aussi besoin d'un drag n drop sur mon image pour la renvoyer dans un champ html...
Merci ;)

code que je réutilise:
<html>
<head>
</head>

[javascript:alert(document.myApplet.getString()); chemin du répertoire]

</html>


import java.applet.*;
import java.awt.*;
import java.util.*;
import java.lang.*;
import java.text.*;
import java.awt.event.*; 
import java.io.*;
import javax.swing.*;
import java.net.URLDecoder;


public class test extends Applet {
     String sFileName; 
     ImageIcon icon;
     Image img;
    String sjsFileName;
    String sjsFilePath;
    
    public test() {
        Panel p = new Panel();
        Font f;
        String osname = System.getProperty("os.name","");
        if (!osname.startsWith("Windows")) {
            f = new Font("Arial",Font.BOLD,10);
        } else {
            f = new Font("Verdana",Font.BOLD,12);
        }
        p.setFont(f);
        p.add(new Button("Parcourir"));
        
        p.setBackground(new Color(255, 255, 255));
        
        add("North",p);
        
    }
    public boolean action(Event evt, Object arg) {
        if (arg.equals("Parcourir")) {
            System.out.println("OPEN CLICKED");
            // cette méthode fonctionne
            Frame parent = new Frame();
            FileDialog fd = new FileDialog(parent, "Répertoire de l'image:", FileDialog.LOAD);
            fd.show();
            String selectedItem = fd.getFile();
            if (selectedItem == null) {
                // no file selected
            } else {
                // read the file
                //System.out.println("reading file " + fd.getDirectory() + File.separator + fd.getFile() );
                sFileName = fd.getDirectory() + File.separator + fd.getFile();

                displayFile(sFileName); 
            }        
        } else return false;
        return true;
    }

    public void paint(Graphics g)
    {
        int width, height;
        
        if (img!=null) {
                width = img.getWidth(this);
                height = img.getHeight(this);
            if (width < height) {
                if (height <= 500)    {
                    g.drawImage(img, 0, 40, this);
                }else {
                    double ratio = 500 / (double) height;
                    double temp2 = width*ratio;
                    int temp = (int) temp2;
                    g.drawImage(img, 0, 40, temp, 500, this);
                }
            } else {
                if (width <= 500)    {
                    g.drawImage(img, 0, 40, this);
                }else {
                    double ratio = 500 / (double) width;
                    double temp2 = height*ratio;
                    int temp = (int) temp2;
                    g.drawImage(img, 0, 40, 500, temp, this);
                }
            }
        }    
    }

    public void displayFile (String sFileName){
        System.out.println("file name : " + sFileName);
        try {
            String slocalFileName = URLDecoder.decode(sFileName, "UTF-8");
            System.out.println("slocalFileName : " + slocalFileName);
            icon = new ImageIcon(slocalFileName);
            img = icon.getImage();
            
            repaint();
        }
        catch (Exception e)
        {
            System.out.println("erreur " + e.toString());
        }
    }
// quand j'appelle cette fonction directement de la page html, ça génère l'exception
    public void displayFile2 (String sPathName){
        System.out.println("path name : " + sPathName);

        try {
            String slocalFileName = URLDecoder.decode(sPathName, "UTF-8");

            System.out.println("slocalFileName : " + slocalFileName);
            icon = new ImageIcon(slocalFileName);
            img = icon.getImage();
            
            repaint();
        }
        catch (Exception e)
        {
            System.out.println("erreur " + e.toString());
        }
    }

    public String getString() {
        return sFileName; 
    }

    public void setFileName(String s)  throws Exception 
    {
        try {
             sjsFileName = new String( s );
            System.out.println("sjsFileName : " + sjsFileName);
             return ;
        }
        catch  (Exception e)
        {
            System.out.println("erreur " + e.toString());
        }
    }
    
    public void setFilePath(String s)  throws Exception 
    {
        try {
             sjsFilePath = new String( s );
            System.out.println("sjsFilePath  (encodé): " + sjsFilePath);
            System.out.println("sjsFilePath  (décodé): " + URLDecoder.decode(sjsFilePath, "UTF-8"));
             sjsFilePath = new String( URLDecoder.decode(sjsFilePath, "UTF-8") );
             return ;
        }
        catch  (Exception e)
        {
            System.out.println("erreur " + e.toString());
        }
    }
}
0
cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 12
26 mars 2012 à 15:24
?? un drag and drop?? pour l'envoyer par la suite au server?
0
phenix22000 Messages postés 11 Date d'inscription jeudi 13 novembre 2008 Statut Membre Dernière intervention 28 mars 2012
26 mars 2012 à 16:40
non pas exactement, pour la glisser dans un champ html.
Par défaut l'image n'est pas clicable ou "glissable" comme c'est le cas dans la plupart des navigateurs avec les images, on peut les "droper" d'un champ à l'autre sans difficulté. Je cherche à reproduire la même chose mais pour ça il faut que les images soit uploadées sur le serveur (ce qui ne doit pas être fait dans mon cas), ou dans l'autre cas je peux récupérer les images de l'utilisateur par l'intermédiaire de l'applet, j'ai réalisé la première étape mais je n'arrive pas à la "glisser"...
Une idée ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 12
27 mars 2012 à 08:05
la désolé je ne peux rien... je ne suis pas un pro dans le monde du développement web...

Peut-être qu'un autre membre pourra plus t'aider...
0