2013-03-12 3 views
2
public class BlendablePicture extends Picture { 
    public BlendablePicture(String filename) { 
     super(filename); 
    } 

    public void blendRectWithWhite(int xMin, int yMin, int xMax, int yMax, 
      double a) { 
     int x; 
     x = xMin; 
     while (x <= xMax) { 
      int y; 
      y = yMin; 
      while (y <= yMax) { 
       Pixel refPix = this.getPixel(x, y); 
       refPix.setRed((int) Math.round(refPix.getRed() * (1.0 + a))); 
       refPix.setGreen((int) Math.round(refPix.getGreen() * (1.0 + a))); 
       refPix.setBlue((int) Math.round(refPix.getBlue() * (1.0 + a))); 

       y = y + 1; 
      } 
     } 
    } 
} 

J'ai besoin de mélanger la couleur blanche avec les pixels, mais à la place ce code rend tout plus lumineux! Il doit ressembler à ceci:Fusionner l'image avec la couleur blanche

Blended White - Illustrated

toute aide avec ce code serait apprécié!

+1

"Je dois mélanger la couleur blanche avec les pixels, mais à la place ce code rend tout plus lumineux!" Hum, quoi? – djechlin

+0

le code que j'ai sous la méthode "blendRectWithWhite" ne fait qu'intensifier les couleurs des pixels. J'ai besoin de mélanger en quelque sorte la couleur blanche (255,255,255) avec une image. – Alex

Répondre

3

Au lieu de

refPix.setRed ((int) Math.round (refPix.getRed() * (1.0+ a)));

Essayez quelque chose comme

refPix.setRed ((int) Math.round (refPix.getRed()*(1.0-a)+255*a));

quand a = 1.0, vous obtenez R * 0,0 + 255 * 1,0 = 255

quand a = 0,0, vous obtenez R * 1,0 + 255 * 0,0 = R

quand a = 0,5, vous obtenez R * 0,5 + 255 * 0,5 (demi-moitié)

Cela fonctionne avec n'importe quelle couleur non seulement blanc, il vous suffit de remplacer le 255 pour le rouge, le vert et le bleu avec les couleurs de quoi la couleur que vous voulez mélanger avec elle et vous obtenez un mélange RGB-moyenné.

+0

(Obligatoire) Oui, mais, va-t-il se fondre? – Voldemort

+1

@Omega Oui, ça se mélange – Patashu

Questions connexes