
{filelink=10271}
import java.awt.geom.AffineTransform;
import java.awt.image.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.imageio.ImageIO;
import java.io.File;
/*
* @auteur sakoba adams
* faire tourner une image
*
*/
public class RotationImage
{
private BufferedImage image;
JFrame frame;
private RotationImage()
{
// Création, configuration et affichage d'un JFrame
frame=new JFrame("Java: Manipulation des image");
frame.setSize(400, 400);
frame.setVisible(true);
// Créer un bouton pour la sélection d'une image
JButton btnSelect=new JButton("Sélectionner une image");
// Ajouter le code de sélection de l'image(JFileChooser)
btnSelect.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
JFileChooser choix=new JFileChooser();
int op=choix.showOpenDialog(null);
if(op==JFileChooser.APPROVE_OPTION)
{
try{
Image img = ImageIO.read(new File(choix.getSelectedFile().getPath()));
image = new BufferedImage(img.getWidth(null), img.getHeight(null),
BufferedImage.TYPE_BYTE_INDEXED);
image.getGraphics().drawImage(img, 0, 0, null);
frame.add(new JComponent()
{
public void paintComponent(Graphics g)
{
if (image != null) g.drawImage(image, 0, 0, null);
}
});
frame.invalidate();
frame.validate();
}catch(Exception err)
{
JOptionPane.showMessageDialog(null,err);
}
}
}
});
// Créer le bouton qui fait pivoter l'image
JButton btnPivote=new JButton("Cliquez ici pour pivoter l'image");
// Le code de rotation de l'image
btnPivote.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
AffineTransform transformer = new AffineTransform();
transformer.rotate(0.5, image.getWidth() / 2, image.getHeight() / 2);
AffineTransformOp op = new AffineTransformOp(transformer,
AffineTransformOp.TYPE_BILINEAR);
image = op.filter(image, null);
frame.repaint();
}
});
JPanel pnl=new JPanel();
pnl.add(btnSelect);
pnl.add(btnPivote);
frame.add(pnl,java.awt.BorderLayout.NORTH);
}
public static void main(String[] argv) throws Exception {
new RotationImage();
}
}