|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() |
salut
en ce moment je suis en train de faire une classe permettant de charger n'importe quel bitmap et de l'enregistrer en n'importe quel format mais je bloque un peu sur l'enregistrement d'un bmp en 4 ou 8 bits à partir d'un bmp de 24 bits. j'ai déjà trouver une solution pour le 4 bits, à savoir j'écris la palette dans le fichier (tjs la même), puis ensuite je calcul la variation entre chaque pixel et chaque couleurs de la palette et je garde la couleurs ou la variation est la plus faible. mais j'aimerais bien trouver un algorithme qui permettrait de trouver la palette la plus adapter au bitmap ... en plus j'ai un autre pb, mon algo ne sera pas applicable sur du 1 octet (8bits) car les temps seront beaucoup trop long ... voila donc si qq1 sait comment trouver une palette adapter à un bitmap et transformer ces pixels pour qu'ils correspondent à la palette ... @+ |
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() |
Hum...
J'ai déjà essayé cela sous Windows en C/C++, à partir de l'exemple "storing an image". En faisant un GetDIBits() avec les bons paramètres, j'avais pu obtenir une image 256 couleurs acceptable à partir d'un bitmap 24 bits... Je n'ai pas le code à portée de main, mais l'appel demandait à obtenir bitmap et palette sous forme 8bpp, et cela semblait marcher à partir de n'importe quel type de bitmap... Edit: http://www.isty-info.uvsq.fr/~benoit/Bitmap.c Regarde du coté de la fonction Create8BitBMPFile()... |
|
|
00
|
|
|
#3 |
![]() ![]() Inscription : juillet 2004 Messages : 2 246 ![]() |
Tu devrais poser ta question dans le forum adapté : algorithmes ou programmation sous windows.
__________________
Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer. |
|
|
00
|
|
|
#4 |
|
Membre éprouvé
![]() Inscription : octobre 2002 Messages : 471 ![]() |
Si tu veut éliminers des couleurs je te conseille de regarder comment marchent les Bitmaps BitField (TrueColor ou HiColor)
regarde ce post que j'ai mis : http://www.developpez.net/forums/vie...817680#1817680 Ta problématique (et dis moi si je me trompe) c'est d'éliminer le maximum de couleur RVB afin de pouvoir faire un palette de 256 couleurs (8 bits) ou 16 couleurs (4 bits). Tu peut utiliser le BitField mais en le forçant à tenir sur 8 bits et pas 16... Je te garantis pas que ça marche, mais c'est une piste...
__________________
Qui va piano va sano... |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() |
Médinoc : en fait j'aimerais bien le faire moi même tu ne saurais pas comment fonctionne la fonction ?
ggnore : dsl je ne savais pas bien dans quel forum le mettre matazz : sa ne m'aide pas trop de savoir comment transformer un 24 bits en 16 bits parce que il n'y à pas de palette |
|
|
00
|
|
|
#6 | |
|
Membre éprouvé
![]() Inscription : octobre 2002 Messages : 471 ![]() |
Citation:
Je te donnais cet exemple dans le cas de création de palettes adaptatives...
__________________
Qui va piano va sano... |
|
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() |
ah, j'ai compris ce que tu voulais dire mais dans ce cas il faut que je supprime plus que 3 bits par octet parce que 32 768 c'est encore trop
|
|
|
00
|
|
|
#8 | |
|
Membre éprouvé
![]() Inscription : octobre 2002 Messages : 471 ![]() |
Citation:
Effectivement il se peut que tu doive décaler de plus de 3 bits, il faut que tu t'adapte en fontion de des couleurs de l'image...
__________________
Qui va piano va sano... |
|
|
|
00
|
|
|
#9 | ||
|
Invité de passage
![]() |
j'ai un petit pb,
en suivant ton exemple matazz j'ai réussi à faire la conversion mais il y a un truc qui va pas il ne me garde pas le blanc. en fait je prend les 3 bits de poid fort du rouge les 2 bits de poid fort du vert et les 3 bits de poid fort du bleu. en fait c'est logique qd on réfléchit vu que je garde que 3bits la valeur max est 224. quelqu'un n'aurais pas une solution pour conserver qqchose qui ressemble à du blanc (gris) ? voila le code des fonctions pour convertir un pixel RVB en octet et l'inverse Code :
|
||
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() |
es-ce qu'un modérateur pourrait déplacer ce sujet dans :
algorithmes ou programmation sous windows |
|
|
00
|
|
|
#11 |
|
Membre éprouvé
![]() Inscription : octobre 2002 Messages : 471 ![]() |
En fait si tu veut garder un blanc pur, tu ne peut pas compresser, si tu as des couleur pure 0xFF0000, 0x00FF00, 0x0000FF,... et que tu veut les garder, je te conseille de les mettre dans ta palette directement sans les compresser...
__________________
Qui va piano va sano... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com