Filtre Image

Résolu
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 - 3 janv. 2007 à 01:45
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 4 janv. 2007 à 09:30
Salut:

Comment faire pour "filtrer"/"supprimer" les pixels qu'on ne veut pas les afficher lors de l'affichage d'une image. Par exemple je ne veux pas afficher les pixels noirs.

J'en ai besoin pour faire la superposition de deux images.

6 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
3 janv. 2007 à 14:13
Salut,

regarde du coté des classes :
java.awt.image.Kernel
java.awt.image.ConvolveOp

ou
encore du coté de java.awt.image.RGBImageFilter et remplace les pixels
noir par des pixels transparent (pour des exemples d'application de
cette classe regarde dans mes sources sur les filtre image):

voici un petit exemple :

import java.awt.Color;
import java.awt.Image;
import java.awt.image.FilteredImageSource;
import java.awt.image.RGBImageFilter;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Test extends JFrame{
    private static final long    serialVersionUID    = 1802199483736051124L;

    public Test(){
        super();
        setDefaultCloseOperation(3);
        setSize(300, 300);
        setLocationRelativeTo(null);
        setBackground(Color.YELLOW);//histoire de verifier
        //on charge l'image
        Image img = getToolkit().createImage("img.png");
        //on applique le filtre
        FilteredImageSource fis = new FilteredImageSource(img.getSource(), new ImageFilters());
        //on met a jour l'image avec le filtre
        img = getToolkit().createImage(fis);
           
        setContentPane(new JLabel(new ImageIcon(img)));
       
    }
   
    public static void main(String[] args) {
        new Test().setVisible(true);
    }
}

class ImageFilters extends RGBImageFilter{
   
    public int filterRGB(int x, int y, int rgb) {
        if(isBlack(rgb)){
            //couleur de transparence
            int a = 0xFF;
            //on recupe les couleurs r, g et b
            int r = (rgb & 0xFF0000) >> 16;
            int g = (rgb & 0xFF00) >> 8;
            int b = (rgb & 0xFF);
            //on retourne la couleur en argb
            return (a | r | g | b);
        }
        //on preserve la transparence
        int a = (rgb & 0xFF000000);
        return a | rgb;
    }
   
    private boolean isBlack(int rgb){
        int n = 80;
        //on parse la couleur si elle est relativement sombre
        Color c = new Color(rgb);
        if(c.getRed() <= n && c.getGreen() <= n && c.getBlue() <= n)
            return true;
        return false;
    }
}

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
3
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
3 janv. 2007 à 16:46
me dit qqchose ce morceau de code .... lol

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
3 janv. 2007 à 16:58
Salut,

lol ouep mais en moins long quand meme ;)

[auteurdetail.aspx?ID=234347 sheorogath]>dans la semaine je m'occupe de corriger l'erreur sur les plugins du projet en question ;)

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
3 janv. 2007 à 17:58
ok pas de blem si tu renvoi par mail si je suis pas sur msn ;) (avec ce quil faut savoir pour le svn je texplique plus tard ^^)

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
4 janv. 2007 à 00:30
Salut:

Je vais essayé ta solution, il y a une autre que se base sur l'utilisation de SDLJava, plus précisement la méthode SDL_MapRGB.

Comme la solution est là, je ne vais chercher loin.
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
4 janv. 2007 à 09:30
Salut,

pour toute manipulation basic sur des images pas besoin de SDL limite tu peux aussi la faire avec JAI...

faire une manipulation d'image comme celle la avec SDL c'est comme prendre eclipse pour editer un fichier texte ;)

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
Rejoignez-nous