Changer la palette d'une image Java

Le
chrisjeannot
Bonjour,
Je travail sur une application java ou je dois effectuer un changement de
palette, je dois recuperer une image qui possede 256 nuances de gris et lui
appliqué une palette de couleur prédéfinie, par ex: si la palette de gris a
pour index 0 -> blanc à 255 -> noir et que dans la palette a lui appliqué ca
va de 0->bleu à 255 -> rouge alors l'image doit récuperer les autres
couleurs correspondantes dans l'index. (le pixel d'une image ne recuperant
que la couleur se trouvant dans l'index 0 par ex.)
et alors les problèmes survient et c'est pour ca que je demande a l'aide:
Je pensait utiliser le colorModel IndexedColorModel, en ouvrant une image
avec un indexcolor specifique (comportant ma fameuse palette). Et le
problème c'est qu'il ne convertit pas chaque couleur de pixel par sa place
dans l'index mais remplace la couleur la plus proche
Donc voila .. j'aimerais bien savoir comment effectuer ca Ca fait une
semaine que je suis decu et franchement je sais plus par quoi chercher j'ai
fait 10000 recherches sur google

Je vous remercie vraiment d'avance sur vous pouviez me donner des pistes
franchement .

Merci

Kal


begin 666 icon_sad.gif
M1TE&.#EA#P`/`+,,`/_J`$5%10```/_.`/_)`/Z=`/^T`/_^D__]$___Q__E
M`/__ZP```````````````"'Y! $```P`+ `````/`````18D$D9:IV8U97.
M&1<6< @"G$,13$$GG+"0KMKQPC&H)29P^R>"*G#H_6X$0^6 :P*2E9XSJ P,
DIB>%<&4]";[?ITXS&/P`"IF*52:XW;-,Q4 W##,L"VT2`0`[
`
end

begin 666 icon_cry.gif
M1TE&.#EA#P`/`,00`/_J`$5%10```/_.`/_)`/Z=`/^T`/_^D__]$_______
MQ___Z__E``",V(&[UEY>7@``````````````````````````````````````
M`````````````````````````"'_"TY%5%-#05!%,BXP`P$````A^00%'@`0
M`"P`````#P`/```%7" DBD%9CBA4+LIQ#"<:L @"W$,1C$$KW$!!;J<Z_(!!
MF$IA0R()NL#!)C@"J@""H71P.K6EIO<&#@S&-P9T9[Y5WUFE:C!X(!F/(8].
MZ/?U,@$&@P91*3PF1",A`"'Y! 44`! `+ 0`!0`'``<```41("1 Y$B>9-*<
M38*^,&R>0@@`(?D$!0H`$ `L! `(``<``0``!09@XD"DDX0`(?D$!0H`$ `L
M! `'``<``P``!0H@((Y DHRFB28A`"'Y! 4*`! `+ 0`" `'``,```4+( !
MI$B>9()"20@`(?D$!0H`$ `L! `'``<`! ``!0U@T@!DDY!HJ@)"VP(A`"'Y
M! 4*`! `+ 0`" `'``$```4&8.) I).$`"'Y! 4*`! `+ 0`!P`'``,```4*
M("".0)*,IHDF(0`A^00%"@`0`"P$``4`!P`&```%#R $0.1(GF@*F"*+)FD2
#`@`[
`
end

  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
Xavier Tarrago
Le #701049
Je ne comprends pas bien la question...
Sous quelle forme sont les données initialement ?
Pour afficher une image en couleurs indexées, il faut avoir un tableau des
valeurs brutes (de 0 à 255 par exemple).
Si on a déjà une image BufferedImage en couleurs indexées, on peur récupérer
le tableau par
((DataBufferByte)image.getRaster().getDataBuffer()).getData();
et ensuite s'en servir pour faire une nouvelle image indexée avec la bonne
table des couleurs.

"chrisjeannot" news:cd3apo$ujs$
Bonjour,
Je travail sur une application java ou je dois effectuer un changement de
palette, je dois recuperer une image qui possede 256 nuances de gris et
lui

appliqué une palette de couleur prédéfinie, par ex: si la palette de gris
a

pour index 0 -> blanc à 255 -> noir et que dans la palette a lui appliqué
ca

va de 0->bleu à 255 -> rouge alors l'image doit récuperer les autres
couleurs correspondantes dans l'index. (le pixel d'une image ne recuperant
que la couleur se trouvant dans l'index 0 par ex.)
et alors les problèmes survient et c'est pour ca que je demande a l'aide:
Je pensait utiliser le colorModel IndexedColorModel, en ouvrant une image
avec un indexcolor specifique (comportant ma fameuse palette). Et le
problème c'est qu'il ne convertit pas chaque couleur de pixel par sa place
dans l'index mais remplace la couleur la plus proche
Donc voila .. j'aimerais bien savoir comment effectuer ca ... Ca fait une
semaine que je suis decu et franchement je sais plus par quoi chercher
j'ai

fait 10000 recherches sur google ...

Je vous remercie vraiment d'avance sur vous pouviez me donner des pistes
franchement ....

Merci

Kal





Farid
Le #701047
Je ne comprends pas bien la question...
Sous quelle forme sont les données initialement ?
Pour afficher une image en couleurs indexées, il faut avoir un tableau des
valeurs brutes (de 0 à 255 par exemple).
Si on a déjà une image BufferedImage en couleurs indexées, on peur
récupérer

le tableau par
((DataBufferByte)image.getRaster().getDataBuffer()).getData();
et ensuite s'en servir pour faire une nouvelle image indexée avec la bonne
table des couleurs.



En assumant que l'image original est accessible via un BufferedImage, il n'a
qu'a creer une nouvelle image du meme type, mais avec le color model
IndexedColorModel configurer comme il le veut.
ensuite il peut utiliser les methodes getRGB() de l'un puis setRGB() de
l'autre pour copier les pixels.
ca devrait marcher sans trop de soucis...

Farid.

Poster une réponse
Anonyme