import java.awt.geom.AffineTransform; import java.awt.image.AffineTransformOp; import java.awt.image.BufferedImage; import java.awt.Graphics; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JButton; import java.io.File; import javax.swing.JFileChooser; import javax.swing.JOptionPane; import javax.swing.JComponent; import javax.imageio.ImageIO; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.Image; import java.awt.image.BufferedImage; import java.awt.BorderLayout; /* * @auteur sakoba adams * Inverser une image horizontalement * * */ public class ImageInversion1 extends JFrame implements ActionListener { public ImageInversion1() { // Modification de titre setTitle("Java Manipulation des images"); // Arrêter le jvm après la fermeture setDefaultCloseOperation(EXIT_ON_CLOSE); // Définir la taille setSize(500, 350); // Afficher le JFrame setVisible(true); // Créer le bouton de sélection de l'image btnSelect=new JButton("Sélectionner une image"); // Créer le bouton de modification de l'image btnInversion_hori=new JButton("Cliquez ici pour inverser l'image"); btnInversion_hori.addActionListener(this); btnSelect.addActionListener(this); JPanel pnl=new JPanel(); pnl.add(btnSelect, BorderLayout.WEST); pnl.add(btnInversion_hori, BorderLayout.EAST); add(pnl,java.awt.BorderLayout.NORTH); } public void actionPerformed(ActionEvent evt) { /* * Si l'utilisateur clique sur ce bouton * ouvrir la boîte de dialogue de sélection * de l'image */ if(evt.getSource()==btnSelect) { JFileChooser choix=new JFileChooser(); int op=choix.showOpenDialog(null); if(op==0) { 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); add(new JComponent() { public void paintComponent(Graphics g) { if (image != null) g.drawImage(image, 0, 0, null); } }); invalidate(); validate(); }catch(Exception err) { JOptionPane.showMessageDialog(null,err); } } } /* * Autrement, Si l'utilisateur clique sur ce bouton * Inverser l'image horizontalement * */ else if(evt.getSource()==btnInversion_hori) { AffineTransform tx = AffineTransform.getScaleInstance(-1, 1); tx.translate(-image.getWidth(null), 0); AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_NEAREST_NEIGHBOR); image = op.filter(image, null); repaint(); } } public static void main(String[] argv) throws Exception { new ImageInversion1(); } JButton btnSelect, btnInversion_hori; private BufferedImage image; }