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

Langage Java Discussion :

Problème avec la fonction JPEGCodec.createJPEGEncoder


Sujet :

Langage Java

Vue hybride

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 17
    Par défaut Problème avec la fonction JPEGCodec.createJPEGEncoder
    Bonjour à tous,

    J'ai un problème avec la fonction JPEGCodec.createJPEGEncoder qui ne semble pas fonctionner. Je vous met le code et continue de vous expliquer:

    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
    public class MyImage {
     
        int width;
        int height;
        String cheminImage;
        String nomImage;
        String cheminImageCryptee;
        String nomImageCryptee;
     
        public MyImage(String cheminImage, String nomImage,boolean bouton) {
                this.nomImage=nomImage;
                this.cheminImage=cheminImage;
                this.cheminImageCryptee="";
                String libelle = "Image : ";
                String titre = libelle+nomImage;
                MaFenetre fen = new MaFenetre(cheminImage, nomImage,bouton) ;
                fen.setTitle(titre);
                if(titre.length() >= 50){
                    fen.setMinimumSize(new Dimension(500, 150));
                }else{
                    fen.setMinimumSize(new Dimension(500+titre.length(), 150));
                }
                this.width=fen.pan.photo.getWidth(null);
                this.height=fen.pan.photo.getHeight(null);
                fen.setSize(fen.pan.photo.getWidth(null)+20, fen.pan.photo.getHeight(null)+80);
                fen.setResizable(false);
                fen.setVisible(true);
        }
     
        public void crypter() throws FileNotFoundException, IOException {
            int i;
            int posPoint = cheminImage.lastIndexOf('.');
            String cheminAbsolu = cheminImage.substring(0,posPoint);
            String extension = cheminImage.substring(posPoint + 1);
            cheminImageCryptee=cheminAbsolu+"_crypte."+extension;
            posPoint = nomImage.lastIndexOf('.');
            String nomAbsolu = nomImage.substring(0,posPoint);
            nomImageCryptee=nomAbsolu+"_crypte."+extension;
            Toolkit tk = Toolkit.getDefaultToolkit();
            Image img = tk.getImage(cheminImage);       
            int w = -1;
            w = img.getWidth(null);
            if(w != -1){
                System.out.println(w);
            }
            int h = img.getHeight(null);
            int [] pixels = new int[w * h];
            PixelGrabber pg = new PixelGrabber(img,0,0,w,h,pixels,0,w);
            try {
              pg.grabPixels();
            }
            catch(InterruptedException ie) {
              ie.printStackTrace();
            }
            BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
            Graphics2D g = bi.createGraphics();
            g.drawImage(bi, 0, 0, width, height, null);
            BufferedOutputStream fos = null;
            fos = new BufferedOutputStream(new FileOutputStream(cheminImageCryptee));
            JPEGImageEncoder jpeg = null;
            jpeg = JPEGCodec.createJPEGEncoder(fos);   
            jpeg.encode(bi);
            fos.close();
        }
    }
    Dans la fonction crypter(), toutes les variables semblent bien avoir été affectées excepté la variable JPEGImageEncore jpeg qui est restée à null. Par la suite, la fonction encode nous renvoie une exception de pointeur null:

    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
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
            at javaapplication1.MyImage.crypter(MyImage.java:92)
            at javaapplication1.Principal.jButton8ActionPerformed(Principal.java:612)
            at javaapplication1.Principal.access$700(Principal.java:36)
            at javaapplication1.Principal$8.actionPerformed(Principal.java:321)
            at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2012)
            at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2335)
            at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:404)
            at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
            at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:253)
            at java.awt.Component.processMouseEvent(Component.java:6108)
            at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
            at java.awt.Component.processEvent(Component.java:5873)
            at java.awt.Container.processEvent(Container.java:2105)
            at java.awt.Component.dispatchEventImpl(Component.java:4469)
            at java.awt.Container.dispatchEventImpl(Container.java:2163)
            at java.awt.Component.dispatchEvent(Component.java:4295)
            at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4461)
            at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4125)
            at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4055)
            at java.awt.Container.dispatchEventImpl(Container.java:2149)
            at java.awt.Window.dispatchEventImpl(Window.java:2478)
            at java.awt.Component.dispatchEvent(Component.java:4295)
            at java.awt.EventQueue.dispatchEvent(EventQueue.java:604)
            at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
            at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
            at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)
    Je précise que je développe avec Netbeans sous Linux. Merci d'avance pour vos réponses.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Par défaut
    a tu tentais de fair ca ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    JPEGEncodeParam JPEGparam = JPEGCodec.getDefaultJPEGEncodeParam(bi);
    jpeg = JPEGCodec.createJPEGEncoder(fos, JPEGparam );

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 17
    Par défaut
    Bonjour,

    J'ai rajouté cela mais ca ne change rien...Toujours la même exception.

    Merci quand même de te pencher sur mon problème

  4. #4
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ImageIO.write(bi,"jpeg",cheminImageCryptée);
    Pas besoin de JPEGEncoder pour ça....

    Par contre ton code me semble foireux dans la partie suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);        
    Graphics2D g = bi.createGraphics();        
    g.drawImage(bi, 0, 0, width, height, null);
    En effet dans ce code tu dessine l'image sur elle même. Or tu viens de créer cette image donc elle ne contient rien.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 17
    Par défaut
    Bien merci pour ses rensignement.

    J'ai donc finalement reussi a m'en sortir avec le ImageIO et en changeant mon drawImgae plus "utile"....

    Merci encore

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

Discussions similaires

  1. Problème avec une fonction date.
    Par kmayoyota dans le forum ASP
    Réponses: 8
    Dernier message: 09/09/2004, 12h33
  2. Problème avec la fonction findfirst ()
    Par Angelico dans le forum Windows
    Réponses: 3
    Dernier message: 05/08/2004, 20h40
  3. [Requete SQL en VBA] Problème avec la fonction FLOOR
    Par zubral dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/07/2004, 13h24
  4. Problème avec les fonctions
    Par jvachez dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/01/2004, 12h06
  5. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04

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