problème d'affichage de BufferedImage
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 :
Code:
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;
}
} |
la classe pour la transformation
Code:
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));
}
}
} |
et finalement le Listner pour appelé les classe
Code:
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