Java: Pivoter une image

Author:

 list, date, list, set, swing, awt, JPanel, JFrame
Download

import java.awt.geom.AffineTransform;
import java.awt.image.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.imageio.ImageIO;
import java.io.File;
 
	/*
	 *  @auteur sakoba adams
	 *  faire tourner une image
	 *
	 */
public class RotationImage
{
	private BufferedImage image;
	JFrame frame;
 
	private RotationImage()
	{
		// Création, configuration et affichage d'un JFrame
		frame=new JFrame("Java: Manipulation des image");
		frame.setSize(400, 400);
		frame.setVisible(true);
		// Créer  un bouton pour la sélection d'une image
		JButton btnSelect=new JButton("Sélectionner une image");		
		// Ajouter le code de sélection de l'image(JFileChooser)
		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);
					frame.add(new JComponent()
           			{
              			public void paintComponent(Graphics g)
              			{
                 		if (image != null) g.drawImage(image, 0, 0, null);
             			}
           			});
        			frame.invalidate();  
        			frame.validate();
 
        	 	}catch(Exception err)     		
        	 	{
        	 		JOptionPane.showMessageDialog(null,err);
        	 	}
 
        		}
			}
		});
 
		// Créer  le bouton qui fait pivoter l'image
		JButton btnPivote=new JButton("Cliquez ici pour pivoter l'image");
 
		// Le code de rotation de l'image
	    btnPivote.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent evt)
			{
		    AffineTransform transformer = new AffineTransform();
    		transformer.rotate(0.5, image.getWidth() / 2, image.getHeight() / 2);
 
    		AffineTransformOp op = new AffineTransformOp(transformer,
        	AffineTransformOp.TYPE_BILINEAR);
    		image = op.filter(image, null);
    		frame.repaint();
			}
		});
 
		JPanel pnl=new JPanel();
		pnl.add(btnSelect);
		pnl.add(btnPivote);
		frame.add(pnl,java.awt.BorderLayout.NORTH);
	}
  public static void main(String[] argv) throws Exception {
  	new RotationImage();
 
  }
}