
{filelink=10272}
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.File;
import javax.imageio.ImageIO;
/*
* @auteur sakoba adams
* faire retourner une image
*
*/
public class FlipImage extends JFrame implements ActionListener
{
JButton btnSelect, btnBascul;
private BufferedImage image;
public FlipImage()
{
// Configuration de JFrame
setTitle("Manipulation des image");
setLayout(new BorderLayout());
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(500, 350);
setVisible(true);
btnSelect=new JButton("Sélectionner une image");
btnBascul=new JButton("Cliquez ici pour inverser l'image");
btnBascul.addActionListener(this);
btnSelect.addActionListener(this);
JPanel pnl=new JPanel();
pnl.add(btnSelect);
pnl.add(btnBascul);
add(pnl,java.awt.BorderLayout.NORTH);
}
// Ecrire les codes de deux boutons
public void actionPerformed(ActionEvent evt)
{
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);
}
}
}
else if(evt.getSource()==btnBascul)
{
AffineTransform tx = AffineTransform.getScaleInstance(1, -1);
tx.translate(0, -image.getHeight(null));
AffineTransformOp op = new AffineTransformOp(tx,
AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
image = op.filter(image, null);
repaint();
}
}
public static void main(String[] argv) throws Exception
{
new FlipImage();
}
}