CITATION(Khertan @ 18/04/2007 à 18:06 )

Bah voila tout est dans le titre...
L'un de vous aurez un algo de dessin en transparence d'une image sur une autre ... (de la vrai transparence ... pas un mask, une couche alpha).
Ca te convient pas la somme pondérée des composantes R G B des deux images ? Si tes couleurs sont des entiers 8 bits, avec alpha constante entre 0 et 256 :
destination.r = (alpha * source.r + (256-alpha) * destination.r) >> 8
destination.g = (alpha * source.g + (256-alpha) * destination.g) >> 8
destination.b = (alpha * source.b + (256-alpha) * destination.b) >> 8
Tu peux aussi avoir une image en niveaux de gris qui te donne la transparence de chaque pixel, auquel cas tu utilises en chaque point sa valeur pour alpha.
Pour le 16 bits, il faut faire un peu de gymnastique des bits pour extraire les valeurs RGB, et du coup les intervalles ne sont plus sur 0..255 mais sur respectivement 0..32, 0..64, 0..32 pour le rouge, vert et bleu (5:6:5).
Pour le 8 bits, c'est plus galère parce que tu dois convertir les indices de couleurs en valeurs RGB, et surtout, une fois que tu trouves la couleur cible, trouver l'indice de la couleur qui s'en rapproche le plus... Si tu peux te payer le luxe de réserver 64ko de RAM, tu peux te faire un cache que tu remplis au fur et à mesure pour éviter d'avoir à faire à chaque pixel les opérations :
- De conversion des des indices de couleurs dans les images source (i) et destination (j) en leurs valeurs RGB.
- Le compositage des deux couleurs.
- La recherche dans la palette de la couleur la plus proche (d'indice k).
Une fois que tu l'as fait, tu stockes dans ton cache en [i][j] la valeur k. Et avant de faire la conversion ou le compositage, tu cherches si en [i][j] il y a quelque chose dans ton cache (avec la convention 0 = entrée non remplie)... C'est surtout efficace si les deux images ont beaucoup de pixels de couleurs identiques (dessins au trait).