OVH Cloud OVH Cloud

Changer la palette d'une image Java

2 réponses
Avatar
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

2 réponses

Avatar
Xavier Tarrago
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" a écrit dans le message de
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





Avatar
Farid
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.