[Delphi] tableau et pointeur

tableau et pointeur [Delphi] - Delphi/Pascal - Programmation

Marsh Posté le 08-11-2005 à 20:30:36    

:hello:  
 
Ma question va peut être sembler basique à certain mais cela fait un petit moment que je suis dessus et je commence à avoir mal à la tête :p
Tout d'abord vous devez savoir que j'utilise une libraire que je n'ai pas écrite personnelement, ce qui explique que je bloque sur certains points.
 
 
Mon problème est:
Je dispose de ces 2 éléments:
- Buffer: PByte
- BufferLen: Integer
- le format du pixel (8, 16, 24, 32)
- ainsi que la largeur/hauteur de l'image en pixels.
 
Je soupsonne BufferLen d'être la longueur du Buffer, en octet vu le type du buffer.
Ce buffer contient une image.
 
J'ai besoin de faire des opérations sur cette image, la soustraire à une autre. L'idée étant que si le résultat est noir alors les 2 images sont équivalentes.
 
Mon raisonnement.
Si le format du pixel = 8bits alors une case du Buffer = un pixel = une couleur
Si c'est 32 alors 2 cases du buffer = 1 pixel = une couleur
ainsi de suite.
 
L'un de mes problemes, j'en ai surement d'autres^^ est dans le cas ou un pixel >= 2 cases du buffer.
Je ne sais pas trop comment faire pour récupérer la couleur.
- Additionner les n cases ?
- les concaténer? soit multiplier par 1111 1111b.
 
Actuelelment mon code ne donne rien mais c'est un gros bordel de tests. Je vais donc faire une pause et recommencer tous ceci demain matin.  
 
En attendant je me suis dit que certains auraient peut être des suggestions pouvant m'aider.
 
merci d'avance ;)


Message édité par ffomnislash le 08-11-2005 à 20:30:48
Reply

Marsh Posté le 08-11-2005 à 20:30:36   

Reply

Marsh Posté le 10-11-2005 à 14:59:53    

Pas super clair ton histoire....Je comprend mème pas si tu est debutant en infographie ou si ton problème est trop complexe pour que je ne le saisisse  :??:  
Allez! Je part de la 1ere hypothese
Si les deux images sont au meme format (meme dimension, meme nombre de bit et (dans le cas d'un 8 bit) meme palette), le probleme est tout con: tu prend chaque octect du premier buffer, tu soustrait à celui corespondant(ie en traitant betement comme des octect, t'ocpe pas de conaitre la taille des pixels) dans le second et tu obtien une nouvelle image ou tout ce qui n'est pas noir est la diference.
 
Maintenant, si tu souhaite "isoler" les couleurs, ca se decompose généralement(je dit bien GENERALEMENT) comme ça:
 
24 bits: En codage classique RGB, le 1er octect donne le niveau de rouge, le 2ieme le vert(green) et le 3ieme le bleu. C'est de loin le format le plus "sympa" à utiliser
16 bit : meme principe que le 24 bits, sauf que que 1 couleur est codé sur 6 bit (le rouge, je croi) et les 2 autres sur 5
32 bits: 2 possibilité:
           1) 1 couleur codé sur 10 bits et les 2 autres sur 9
           2) 3 couleur codés sur 8 bits, le 4ieme octect donne la transparence
8 bits : L'image utilise 256 couleur sur une palete de 2^24 (ou 2^32). La couleur n°1 corespond à une couleur sur 24 bits, la n°2 à une autre ect.... Le tableau de corespondance est en entete du fichier (là, faudra le retrouver toi mème)
 
Y'a aussi possiblité que ce soit codé en YUV et non en RGB (explications ici :http://www.metagames-fr.com/Article75_Les-codages-de-Couleurs.php)
Good luck....surout si j'ai repondu completement à coté  :sweat:


Message édité par Zozol le 10-11-2005 à 15:02:01
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed