Modifier une image en java grâce à codagePixels

courbix21 - 15 mars 2013 à 17:33
 courbix21 - 1 avril 2013 à 11:11
Bonjour à tous, je suis élève de terminal en spécialité ISN. Pour mon projet je dois faire apparaître une image avec les différentes sortes de daltonisme Au début je montre une image que les personnes aperçoivent sans ce handicap, soit une image normal.

Ensuite je voudrais en changeant le code montrer une image selon un daltonien atteint de protanopie, qui n’aperçoit pas le rouge.

Puis un daltonien atteint de tritanopie, qui n’aperçoit pas le bleu.

Un daltonien atteint de deutéranopie, qui n’aperçoit pas le vert.

Enfin un daltonien atteint de achromatopsie, qui n'aperçoit aucune couleur ( voit en noir et blanc).

Voici le code que j'ai déjà réussi a faire:

void main() {

load("C:/Users/antoine/Downloads/crayon.jpg.jpg"); // charger l'image

setRunnable(new Runnable() { //enclenche pour le clic de souris

public void run() {

int width = getWidth(); // obtenir la longueur de l'image

int height = getHeight(); // et sa hauteur

for (int i = ( - width); i <= width; i ++) // en partant de - longueur à longueur

{

for (int j = ( - height); j <= height; j ++) // puis de - hauteur à hauteur

{

setPixel(i, j, getPixel(i, j)); // on affiche un pixel de couleur noir (0) à blanc (255) aux coordonnées longueur/hauteur de couleur obtenue sur ce pixel

}

}

}

}

);

}

Merci d'avance de votre aide

14 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
18 mars 2013 à 09:44
salut,

Là, tu nous exposes ce que tu as fait mais tu ne poses aucune question ! Quel est donc ton problème ?
0
Mon probleme est que je ne sais pas par ou commencer pour ne plus apercevoir la couleur rouge ou bleu ou vert sur l'image.
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
18 mars 2013 à 14:49
Tu utilises une BufferedImage ?
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
20 mars 2013 à 11:29
Rien de plus ???
0

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

Posez votre question
Non je ne sais pas ce que cela signifie. Je suis novice en java...
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
25 mars 2013 à 10:01
Dans ton code, comment tu enregistres les pixel ? Dans une image ? Si ce n'est pas le cas, c'est ce que tu devrais faire, tu pourrais donc l'afficher plus facilement.

Etant donné que tu ne répond pas très vite, je ne sais pas si tu es toujours sur le sujet ? Est ce le cas ? Et est ce que tu veux que je t'explique ?
0
Je suis toujours sur le sujet
Oui je voudrais bien que tu m'explique comment on enregistre les pixels en utilisant BufferedImage.
Merci
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
25 mars 2013 à 10:59
Ok,

dans ce cas, pour enregistrer des pixels, il faut le faire dans une BufferedImage. Pour cela, tu peux te servir d'une image de base et récupérer ses pixels de cette manière :

BufferedImage image = ImageIO.read(new File(C:\...\image.jpg));
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
25 mars 2013 à 11:00
Ensuite, tu vas devoir initialiser une nouvelle image à l'aide de ton image de base :
	int w = image.getWidth();
int h = image.getHeight();
BufferedImage img = new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
25 mars 2013 à 11:03
Après, tu peux récupérer les pixels d'une image dans un tableau de rgb :
	int[] r = new int[w*h];
image.getRGB(0,0,w,h,r,0,w);

Et là, tu peux les modifier
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
25 mars 2013 à 11:04
Et enfin, tu affectes le tableau des pixels modifiés à ta nouvelle image :
	img.getRaster().setDataElements(0, 0, w, h, r);
0
Après avoir charger une image grâce à "load" j'ai inserré
BufferedImage image = ImageIO.read(new File(E:\drapeau.jpeg));
et suite à la compilation cela c'est affiché et je n'ai pu aller à la prochaine ligne..


')' expected
BufferedImage image = ImageIO.read(new File((E:\drapeau.jpeg)));
^

merci pour les codes
0
Après avoir charger une image grâce à "load" j'ai inserré
BufferedImage image = ImageIO.read(new File(E:\drapeau.jpeg));
et suite à la compilation cela c'est affiché et je n'ai pu aller à la prochaine ligne..


')' expected
BufferedImage image = ImageIO.read(new File((E:\drapeau.jpeg)));
^

merci pour les codes
0
Excuse moi le petit chapeau "^" et en dessous des ":" après le E
0
Rejoignez-nous