salut
voilà, j'ai un problème avec BufferedImage.
je fait une application pour transformer une image couleur qui se trouve dans un JScrollPane en une en niveau de gris, mais j'arrive pas à l'afficher aprés la transformation
voici les classe que j'utilise
classe pour recupérer l'image :
la classe pour la transformation
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 import java.awt.Component; import java.awt.image.BufferedImage; public class getImage { public BufferedImage getImage(Component component){ if(component==null){return null;} int width = component.getWidth(); int height = component.getHeight(); BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g = image.createGraphics(); component.paintAll(g); g.dispose(); return image; } }
et finalement le Listner pour appelé les classe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 import java.awt.color.ColorSpace; import java.awt.image.ColorConvertOp; import java.awt.image.BufferedImage; import java.awt.*; import javax.swing.JComponent; public class Ngris extends JComponent { BufferedImage img; public void paint(Graphics g) { super.paintComponent(g); if(img != null) { g.drawImage(img, 0, 0, null); } } public Ngris(BufferedImage image) { try { ColorConvertOp op = new ColorConvertOp( ColorSpace.getInstance(ColorSpace.CS_GRAY), null); img = op.filter(image,null); } catch(Exception e) { System.out.println(e); } if(img != null) { this.setPreferredSize(new Dimension(img.getWidth(), img .getHeight(null))); } } public Dimension getPreferredSize() { if (img == null) { return new Dimension(100,100); } else { return new Dimension(img.getWidth(null), img.getHeight(null)); } } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public void mousePressed(MouseEvent arg0) { getImage getimage= new getImage (); JScrollPane panel = (JScrollPane) tabbedPane.getSelectedComponent(); BufferedImage img = getimage.getImage(panel); final Ngris ng; ng = new Ngris(img); panel.removeAll(); panel.add(ng); panel.repaint(); } });
si quelqu'un peut voir où je me suis trompé, merci de votre aide
Partager