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
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 37
    Points : 27
    Points
    27
    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 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 852
    Points : 22 869
    Points
    22 869
    Billets dans le blog
    51
    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.

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