Bonjour, je souhaite écrire une fonction me permettant de convertir le BufferedImage passé en paramètre en image dans les tons sépia.
Or, lorsque j'exécute mon programme, le compilateur me donne une erreur de type ArrayIndexOutOfBoundsException.
Je n'ai cependant pas réussi à la corriger. Si quelqu'un peut m'éclairer.
Voici mon code:
L'exception est indiquée à la ligne que j'ai mise en rouge. Je présume donc qu'elle vient du tableau de pixels...
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
38public void sepia(BufferedImage ic, int intensite) { w = ic.getWidth(); h = ic.getHeight(); int sepiaDepth = 20; WritableRaster raster = ic.getRaster(); pixels = new int[w*h*3]; raster.getPixels(0, 0, w, h, pixels); for (int i=0;i<pixels.length; i+=3) { int r = pixels[i]; int g = pixels[i+1]; int b = pixels[i+2]; int gry = (r + g + b) / 3; r = g = b = gry; r = r + (sepiaDepth * 2); g = g + sepiaDepth; if (r>255) r=255; if (g>255) g=255; if (b>255) b=255; // Darken blue color to increase sepia effect b-= intensite; if (b<0) b=0; if (b>255) b=255; pixels[i] = r; pixels[i+1]= g; pixels[i+2] = b; } raster.setPixels(0, 0, w, h, pixels); }
En tous cas si vous avez des idées ou d'autres solutions alternatives pour faire passer une image en tons sépia je suis preneuse, car j'ai eu vraiment du mal à trouver des pistes sur internet.
merci d'avance !







Répondre avec citation








quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez 
Partager