import java.awt.geom.AffineTransform; import java.awt.image.*; import java.awt.*; import java.awt.BorderLayout; import javax.swing.*; import java.io.File; import javax.imageio.ImageIO; import java.awt.event.*; public class ImageScaling { private BufferedImage image; JFrame frm; /* * @auteur sakoba adams * Modification de l'aspect visuel d'une * image en java. * NOTE: si l'image ne s'affiche pas au * lancement, redimensionner la fenêtre * pour invoquer l'événement repaint de JFrame */ public ImageScaling(String monImage)throws Exception { // Création d'un fenêtre de type JFrame frm=new JFrame("Manipulation des image"); frm.setSize(400, 400); frm.setVisible(true); // Création de menu qui servira à modifier l'aspect de l'image JMenu menu=new JMenu("Fichier"); JMenuItem editImage=new JMenuItem("Reproportionner cette image"); menu.add(editImage); // Ajouter l'option de menu qui permet la modification de l'image editImage.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { // Ces lignes redessinent l'image par échelle AffineTransform transformer = new AffineTransform(); transformer.scale(1, 2); AffineTransformOp op = new AffineTransformOp(transformer, AffineTransformOp.TYPE_BILINEAR); image = op.filter(image, null); frm.repaint(); } } ); JMenuBar bar=new JMenuBar(); bar.add(menu); frm.setJMenuBar(bar); // Ces lignes ajoutent une image comme fond "Background" d'un JFrame Image img = ImageIO.read(new File(monImage)); image = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_RGB); image.getGraphics().drawImage(img, 0, 0, null); frm.add(new JComponent() { public void paintComponent(Graphics g) { if (image != null) g.drawImage(image, 0, 0, null); } }); frm.repaint(); } public static void main(String[] argv) throws Exception { // Lancement de l'application avec l'image comme paramètre new ImageScaling("c:/image.gif"); } } |
Cet article Java: Reproportionner ou dessiner à l’échelle une image est apparu en premier sur .