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; 
      } 
     } 
    } 
} 

Мне нужно смешать цвет белый с пикселями, но вместо этого этот код просто делает все ярче! Он должен выглядеть следующим образом:Смешайте изображение с цветом белый

Blended White - Illustrated

любая помощь с этим кодом будут оценены!

+1

«Мне нужно смешать цвет белый с пикселями, но вместо этого этот код просто делает все ярче!» Гм, что? – djechlin

+0

код, который у меня есть по методу «blendRectWithWhite», только усиливает цвета пикселей. Мне нужно каким-то образом смешать цвет белый (255,255,255) с изображением. – Alex

ответ

3

Вместо

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

Попробуйте что-то вроде

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

при а = 1,0, вы получите R * 0,0 + 255 * 1,0 = 255

при а = 0.0, вы получаете R * 1.0 + 255 * 0.0 = R

, когда a = 0,5, вы получаете R * 0,5 + 255 * 0,5 (половина половины)

Это работает с любым цветом не только белого цвета, вам просто нужно заменить 255 на красный, зеленый и синий цветами того, что цвет, который вы хотите смешать с ним, и вы получаете среднее усреднение RGB.

+0

(Обязательно) Да, но, будет ли это смешать? – Voldemort

+1

@ Omega Да, это смесь – Patashu

Смежные вопросы