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

Entrée/Sortie Java Discussion :

ImageIO . write


Sujet :

Entrée/Sortie Java

  1. #1
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut ImageIO . write
    Salut à tous,

    Je reprend le développement d'un applet java avec le peu de connaissance en JAVA qui me reste ^^

    Je souhaites pouvoir au clic sur un bouton, télécharger une image afficher par l'applet.
    J'ai donc entrepris d'enregstrer cette image sur le disque pour finalement aller la chercher avec le navigateur.
    Mais biensur je n'arrive pas à ce ue je veux.

    Tout d'abord le message d'erreur a la compilation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    203 : Cannot find symbol
    location: class javax.imageio.ImageIO
                            ImageIO.write(m_imageCourante,"jpg",fichierSortie);
                                   ^
    Et mon code :
    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
     
    	public void getDisplayedImage(String nomSortie)
    	{
    		try
    		{
    			String carSep = File.separator; // Utilisation du caractère de séparation pour plus de portabilité
    			File fichierSortie = new File("capture"+carSep+nomSortie+".jpg");
    			if(fichierSortie.exists())
    			{
    				fichierSortie.delete();
    			}
    			ImageIO.write(m_imageCourante,"jpg",fichierSortie);
    		}
    		catch(Exception e)
    		{
    			System.err.println("Erreur écriture image : " + e.getMessage());
    		}
    	}
    Dans le code de l'applet m_imageCourante est définie comme suis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private Image m_imageCourante = null;
    Cet objet est ensuite rempli grâce a une lecture sur un socket :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ByteArrayInputStream bais = new ByteArrayInputStream(bufferImage, 0, offset + 1);
    m_imageCourante = (ImageIO.read(bais));
    J'ai surement fait une erreur de débutant (ce qui est le cas d'ailleurs ^^ ) mais pas moyen de trouver quoi
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    ImageIO est apparu en java 1.4, vérifies ta version de java

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Un javac -version me retourne 1.6.0_01

    Je précise que mes import sont bon puisque le ImageIO.read marche très bien. C'est juste le .write qui semble poser problème
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    IOImage.write prend en premier parametre un objet de type RenderedImage.
    java.awt.Image n'implemente pas cette interface.

  5. #5
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Merci de ta réponse,

    Comment puis je faire dans mon cas pour enregistrer l'image sur le disque dur ?
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Utilises des BufferedImage à la place d'Image (c'est comme des Image, d'ailleur celà en hérite, mais en beaucoup plus flexible)

  7. #7
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Alors suite à tes conseil j'ai été lire la FAQ et trouvé une fonction permettant de passer d' Image à BufferedImage.

    j'ai donc désormais le code suivant :

    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
     
    public void getDisplayedImage(String nomSortie)
    	{
    		try
    		{
    			String carSep = File.separator; // Utilisation du caractère de séparation pour plus de portabilité
    			File fichierSortie = new File("capture"+carSep+nomSortie+".jpg");
    			if(fichierSortie.exists())
    			{
    				fichierSortie.delete();
    			}
    			if(ImageIO.write(convertImgToBufferedImg(m_imageCourante),"jpg",fichierSortie))
    			{
    				System.out.println("Ecriture OK");
    			}
    			else
    			{
    				System.out.println("Ecriture PASOK");
    			}
    		}
    		catch(Exception e)
    		{
    			System.err.println("Erreur écriture image : " + e.getMessage());
    		}
    	}
     
            private BufferedImage convertImgToBufferedImg(Image limage)
            {
                if(limage instanceof BufferedImage)
                {
                    return((BufferedImage)limage);
                }
                else
                {
                    limage = new ImageIcon(limage).getImage();
                    BufferedImage bufferedimage = new BufferedImage(limage.getWidth(null),
                                                                    limage.getHeight(null),
                                                                    BufferedImage.TYPE_INT_RGB);
                    Graphics gr = bufferedimage.createGraphics();
                    gr.drawImage(limage,0,0,null);
                    gr.dispose();
                    return(bufferedimage);
                }
            }
    Ca compil bien et mon applet fonctionne. En revanche cette fonction qui devrait me sauvegarder une image sur le disque ne marche pas.
    Je rentre bien dans la fonction au clic du bouton mais rien ne s'execute.
    J'ai essayer en placant un fichier .jpg (avec le nom adéquat) dans le dossier capture/ pour voir si il le supprimait mais il ne disparait pas et bien entendu le nouveau n'est pas crée.

    Une idée ?

    merci
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    Je rentre bien dans la fonction au clic du bouton mais rien ne s'execute.
    Ce n'est pas tres precis. Tu n'as pas quelques traces?

  9. #9
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    En fait je viens de m apercevoir que IE me retourne une erreur :
    java.lang.Exception : java.security.AccessControlException : access denied (java.io.FilePermission capture\test.jpg read)
    Donc en gros j'ai pas les droits suffisant sur le fichier que je veux créer.
    Ce qui m'etonne c'est que d'une part je suis sous windows et avec un compte admin donc pas de problème de droits sur le dossier concerné et d'autre part mon applet est bien signé.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Direction la FAQ pour apprendre à signer les jar.

  11. #11
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Citation Envoyé par sinok Voir le message
    Direction la FAQ pour apprendre à signer les jar.
    Mon applet est déjà signé, le résultat de jarsigner -verify -verbose -certs MonApplet.jar

    205 Tue Oct 30 10:37:30 CET 2007 META-INF/MANIFEST.MF
    326 Tue Oct 30 10:37:30 CET 2007 META-INF/SIGNATUR.SF
    1033 Tue Oct 30 10:37:30 CET 2007 META-INF/SIGNATUR.DSA
    0 Tue Oct 30 10:37:02 CET 2007 META-INF/
    smk 12134 Tue Oct 30 10:36:54 CET 2007 MonApplet.class
    La méthode pour le signer est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    javac MonApplet.java
    jar cvf MonApplet.jar MonApplet.class image.png
    jarsigner -verbose MonApplet.jar maclef (le keytool ayant déjà été effectué)
    Et pourtant l'erreur est toujours là
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Tu tournes sous quel OS?
    Car vista pose des problème au niveau des applets (pas sur que l'on puisse sortir du mode sanbox d'IE)

  13. #13
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Le "serveur" qui abrite l'applet et le sv Web est un Xp pro (SP2) tout comme les postes sur lesquels je fait les test.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  14. #14
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Tu pourrais éventuellement sortir la stacktrace complête de l'exception?

  15. #15
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Euh oui ...
    Je ne sais pas comment faire (ni a quoi ca sert d'ailleurs ), peut tu m'aider ?
    --EDIT--

    J'ai finalement réussi a contourner le problème en insérant au début de mon init() la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.setSecurityManager(null);
    qui permet d'outrepasser le java.policy
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. ImageIO.write prob suivant le format
    Par nicotine002 dans le forum Multimédia
    Réponses: 3
    Dernier message: 06/07/2006, 11h43
  2. [STRUTS] [JAVA] Affichage conditionnel de bean:write
    Par babylone7 dans le forum Struts 1
    Réponses: 6
    Dernier message: 29/04/2004, 16h20
  3. [Struts]<bean:write>
    Par djoukit dans le forum Struts 1
    Réponses: 7
    Dernier message: 28/04/2004, 14h03
  4. [STRUTS] bean:write
    Par lfournial dans le forum Struts 1
    Réponses: 3
    Dernier message: 30/01/2004, 09h58
  5. write() dans une socket.. unix
    Par slack dans le forum Réseau
    Réponses: 5
    Dernier message: 18/12/2002, 20h42

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