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