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

AWT/Swing Java Discussion :

Problème rotation PNG (Unknown image type 0)


Sujet :

AWT/Swing Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 68
    Points : 52
    Points
    52
    Par défaut Problème rotation PNG (Unknown image type 0)
    Bonjour à tous, j'ai cherché en vain, sur les forums etc...mais j'ai rien trouvé alors je poste ici ma question.

    Voilà je souhaite afficher une image dont on a préalablement fait une rotation.

    voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    BufferedImage image = ImageIO.read(new File(nomImage));
    					image=rotation(image, 90);
    					g.drawImage(image, 0, 0, null);
    Le problème, c'est que j'ai droit à une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Unknown image type 0
    Mon image est une png. J'ai essayé avec des jpg, et cela fonctionne !

    Ce qui m'étonne le plus, c'est qu'une buffered image est indépendante du type de l'image (d'après ce que j'ai pu lire).

    Voyez-vous d'où viendrais le problème par chance ?

    Par avance merci.

    EDIT :

    Pour info, voici la methode de rotation (trouvée sur internet)

    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
    	 public BufferedImage rotation(BufferedImage bi, int degrees) {
    			degrees = degrees % 360;
    			if (degrees > 180)
    				degrees = 180 - degrees;
    			double angle = (degrees * Math.PI) / 180.0f;
    			if (angle == 0.0)
    				return bi;
    			// TODO une vrai rotation pour calculer la taille exacte de l'image
    			// après rotation
    			int sx = bi.getWidth();
    			int sy = bi.getHeight();
    			if (degrees == 90 || degrees == -90) {
    				sx = bi.getHeight();
    				sy = bi.getWidth();
    			}
    			BufferedImage rot = new BufferedImage(sx, sy, bi.getType());
    			AffineTransform at = new AffineTransform();
    			at.translate(sx / 2, sy / 2);
    			at.rotate(angle);
    			at.translate(-bi.getWidth() / 2, -bi.getHeight() / 2);
    			AffineTransformOp ato = new AffineTransformOp(at,
    					AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
    			return ato.filter(bi, rot);
    		}

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Euh, ton exception elle survient à la lecture ou à la rotation de ton image?
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 68
    Points : 52
    Points
    52
    Par défaut
    Bonjour et merci pour ta réponse, mon exception survient a la rotation (mais seulement avec le png !)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Bah remplaces ton bi.getType par un BufferedImage.TYPE_INT_ARGB pour voir ce que ça donne (c'est le type par défaut d'une BufferedImage)
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 68
    Points : 52
    Points
    52
    Par défaut
    Merci beaucoup ! Ca marche ! le problème est donc Résolu !
    Merci encore

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/04/2010, 18h17
  2. Problème pour faire la rotation d'une image(Avec ImageJ)
    Par tadjara dans le forum Traitement d'images
    Réponses: 4
    Dernier message: 12/04/2010, 11h48
  3. Problème pour faire la rotation d'une image(Avec ImageJ)
    Par tadjara dans le forum Débuter avec Java
    Réponses: 0
    Dernier message: 10/04/2010, 11h33
  4. Problème pour faire l'histogramme d'une image type png
    Par Patchanka dans le forum Images
    Réponses: 9
    Dernier message: 28/05/2009, 10h04
  5. Problème pour charger des images PNG
    Par milena dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 05/04/2008, 16h20

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