2011-01-24 7 views
0

je veux faire pivoter une image et au niveau suivant je veux le redimensionner plese aidez-moi. Je crée une classe qui s'étend de JPanel et remplace la méthode paintComponent() pour dessiner l'image.Comment redimensionner et faire pivoter une image

public class NewJPanel extends javax.swing.JPanel { 

/** Creates new form NewJPanel */ 
public NewJPanel() { 
    initComponents(); 
} 

@Override 
protected void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    g.drawImage(image, 20, 20, this); 
} 

Répondre

3

Voici un code que j'utilise. Vous pouvez le modifier pour répondre à vos besoins.

Redimensionner Image:

 

/** 
    * Resizes the image 
    * @param filePath File path to the image to resize 
    * @param w Width of the image 
    * @param h Height of the image 
    * @return A resized image 
    */ 
    public ImageIcon resizeImage(String filePath, int w, int h) { 


     String data = filePath; 
     BufferedImage bsrc, bdest; 
     ImageIcon theIcon; 
     //scale the image 
     try 
     { 
      if(dataSource == DataTypeEnum.file) 
      { 
       bsrc = ImageIO.read(new File(data)); 
      } 
      else 
      { 
       bsrc = ImageIO.read(new URL(filePath)); 
      } 
      bdest = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB); 
      Graphics2D g = bdest.createGraphics(); 
      AffineTransform at = AffineTransform.getScaleInstance((double) w/bsrc.getWidth(), 
        (double) h/bsrc.getHeight()); 
      g.drawRenderedImage(bsrc, at); 

      //add the scaled image 
      theIcon = new ImageIcon(bdest); 
      return theIcon; 
     } 
     catch (Exception e) 
     { 
      Window.getLogger().warning("This image can not be resized. Please check the path and type of file."); 
      //restore the old background 
      return null; 
     } 

    } 
 

Faire pivoter l'image:
REMARQUE: L'angle est en radians

 

public static BufferedImage rotate(BufferedImage image, double angle) { 
    double sin = Math.abs(Math.sin(angle)), cos = Math.abs(Math.cos(angle)); 
    int w = image.getWidth(), h = image.getHeight(); 
    int neww = (int)Math.floor(w*cos+h*sin), newh = (int)Math.floor(h*cos+w*sin); 
    GraphicsConfiguration gc = getDefaultConfiguration(); 
    BufferedImage result = gc.createCompatibleImage(neww, newh, Transparency.TRANSLUCENT); 
    Graphics2D g = result.createGraphics(); 
    g.translate((neww-w)/2, (newh-h)/2); 
    g.rotate(angle, w/2, h/2); 
    g.drawRenderedImage(image, null); 
    g.dispose(); 
    return result; 
} 

 
-1

utiliser la classe BufferedImage

BufferedImage newimg = new BufferedImage (newWidth, newHeight, Imagetype); newImg.createGraphics(). DrawImage (ancienneImpression, 0,0, nouvelleLargeur, nouvelleHeure, 0,0, ancienneLargeur, ancienneHeure, null); Ensuite, il suffit de repeindre en utilisant newImg au lieu de l'ancienne image, devrait fonctionner, je ne suis pas à proximité d'un compilateur pour le moment pour tester.

http://download.oracle.com/javase/1.4.2/docs/api/java/awt/Graphics.html#drawImage%28java.awt.Image,%20int,%20int,%20int,%20int,%20int,%20int,%20int,%20int,%20java.awt.image.ImageObserver%29

+1

comment est-ce que faire pivoter l'image? –

+0

légère vue, je viens de voir la partie "redimensionner" – awestover89

Questions connexes