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(); } }