Bonjour,
je cherche à réaliser des ombres à partir d'une image quelconque.
Voici une simple image pour illustrer mon problème.
Je voudrais simplement rajouter un effet d'anti-aliasing à l'ombre.
Pour arriver à ce résultat je réduit l'image de 33% de hauteur puis je la cisaille, ensuite je transforme tout pixel de couleur en noir ( et le transparent reste tel quel ) , le problème vient de cette transformation qui ne peut gérer d'anti-aliasing, je ne vois pas vraiment comment faire.
Voici le code pour ceux qui préfère :
Y aurait-il une méthode de Graphics2D qui permettrait de transformer une image en noir là ou il y a de la couleur et de laisser un effet d'anti-aliasing aux bordures?
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 private BufferedImage toOmbre(Image image) { BufferedImage bufferedImage = configurationGC.createCompatibleImage(image.getWidth(null)*2, image.getHeight(null)*35/100, BufferedImage.TYPE_INT_ARGB); Graphics2D g = (Graphics2D) bufferedImage.getGraphics(); g.shear(0.8,0); g.drawImage(image,0,0,image.getWidth(null), image.getHeight(null)*33/100,null); g.dispose(); for(int i=0;i<bufferedImage.getWidth();i++) for(int j=0;j<bufferedImage.getHeight();j++) { int rgb = bufferedImage.getRGB(i,j); if(((rgb >>16 ) & 0xFF) != 0 && ((rgb >> 8 ) & 0xFF ) !=0 && (rgb & 0xFF) !=0) bufferedImage.setRGB(i,j,(255<<24)+(0<<16)+(0<<8)+0); } return bufferedImage; }
Merci à vous.
Partager