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

Interfaces Graphiques en Java Discussion :

Problème de rotation d'image


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 37
    Par défaut Problème de rotation d'image
    Bonjour,
    J'essaie de faire une rotation d'image ; elle fonctionne, mais pas correctement.

    Mon image est incluse dans un JPanel, lui même inclus dans une JFrame

    Pour faire appel au script de rotation, j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // Angle entré par l'utilisateur
    int angle = Integer.parseInt(txt);
     
    // Rotation de l'image
    BufferedImage oldImg = ImgTools.rotate(image,angle,false); // fonction statique de la classe ImgTools
     
    // Ajout de la nouvelle image dans le panel
    panneau.setImage(new ImageIcon(oldImg));
    Dans ImgTools, la fonction rotate contient le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     BufferedImage bImage=ImgTools.getBufferedImage(icone);
    int w = bImage.getWidth(null);
    int h = bImage.getHeight(null);    
    AffineTransform transform = AffineTransform.getRotateInstance(Math.toRadians(angle), w/2, h/2);
    AffineTransformOp op = new AffineTransformOp(transform, AffineTransformOp.TYPE_BILINEAR);
    BufferedImage bImage2 = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);     
    op.filter(bImage, bImage2);
    if (whiteBackground) bImage2 = ImgTools.whiteBackground(bImage2);
     return bImage2;
    Le résultat que j'obtiens est le suivant :
    Mon image de départ :


    J'entre l'angle de rotation que je veux : 45°


    L'image fait bien une rotation mais est tronquée, si je regarde la taille de la nouvelle image, elle est identique à celle de départ, ce qui est illogique.


    Si je réitère la rotation, la rotation se fera sur cette nouvelle image tronquée


    Voilà, j'espère que vous saurez m'aider à résoudre ce problème.

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 900
    Billets dans le blog
    54
    Par défaut
    Non, tu l'as dit toi-meme ton image destination ne doit pas avoir la meme taille que ton image source, hors, tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int w = bImage.getWidth(null); // Note : avec une BufferedImage, il existe une methode qui ne necessite pas de parametre.
    int h = bImage.getHeight(null);  // Idem.
    [...]
    BufferedImage bImage2 = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
    Donc ton image destination a exactement le meme format que ton image source !

    A toi donc de calculer correctement les dimensions de l'image destination avant d'effectuer la rotation. Un peu de trigonometrie et le tour sera joue.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

Discussions similaires

  1. Réponses: 5
    Dernier message: 20/03/2013, 22h46
  2. [Débutant] problème de rotation de l'image
    Par slaima15 dans le forum Images
    Réponses: 0
    Dernier message: 13/12/2012, 19h25
  3. Problème de mémoire Affichage images
    Par Repti dans le forum C++Builder
    Réponses: 6
    Dernier message: 29/03/2004, 20h06
  4. Problème de rotation
    Par Francky033 dans le forum DirectX
    Réponses: 1
    Dernier message: 17/07/2003, 16h38

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