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; import java.awt.geom.AffineTransform; import java.awt.image.AffineTransformOp; import java.awt.image.BufferedImage; /* * @auteur sakoba adams * Inverser une image * horizontalement et verticalement * */ public class ImageInversion2 extends JFrame { private BufferedImage image; private ImageInversion2() { super("Java: Manipulation des images"); setSize(400, 400); // Sélectionner l'image à modifier JButton btnSelect=new JButton("Sélectionner une image"); 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); 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); } } } }); JButton btnInverse_ver=new JButton("Cliquez ici pour inverser l'image"); btnInverse_ver.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { AffineTransform tx = AffineTransform.getScaleInstance(-1, -1); tx.translate(-image.getWidth(null), -image.getHeight(null)); AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_NEAREST_NEIGHBOR); image = op.filter(image, null); repaint(); } }); JPanel pnl=new JPanel(); pnl.add(btnSelect); pnl.add(btnInverse_ver); add(pnl,java.awt.BorderLayout.NORTH); } public static void main(String[] argv) throws Exception { new ImageInversion2().setVisible(true); } } |