Bonjour,
je souhaitais faire quelques tests avec les bufferedImage, lorsque j'ai rencontré un problème que je n'explique pas.
J'ai tout d'abord créé des image en dégradé (la valeur d'un pixel est sa position dans l'image) :
Mais lorsque j'ai appelé ma fonction pour une taille de 300*300, je n'ai pas eu le dégradé attendu :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public static BufferedImage CreerBufferedImage(int w, int h) { int x ; int hauteur = h ; int largeur = w ; int[] pixels = new int[largeur*hauteur] ; BufferedImage buffer = new BufferedImage(largeur, hauteur, BufferedImage.TYPE_BYTE_GRAY) ; for (x=0 ; x < pixels.length ; x++) pixels[x] = x ; buffer.setRGB(0, 0, largeur, hauteur, pixels, 0, largeur) ; return buffer ; }
Je pensais qu'arrivé à 65536, la valeur des pixel repartirait à zéro. C'est bien le cas, mais le dégradé n'est pas continu.
Mais lorsque j'appelle pour 256*256, le dégradé est correct :
Questions :
- Pourquoi ce problème ?
- Comment faire pour convertir mes valeurs entre 0..255 vers BufferedImage.TYPE_BYTE_GRAY, car multiplier par un coefficient de type 65536/255 ne fonctionne pas
Merci
Partager