
{filelink=10274}
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);
}
}