将图片与白色混合

时间:2013-03-12 22:15:02

标签: java colors blending

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 个答案:

答案 0 :(得分:3)

而不是

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

尝试类似

的内容

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

当a = 1.0时,得到R * 0.0 + 255 * 1.0 = 255

当a = 0.0时,得到R * 1.0 + 255 * 0.0 = R

当a = 0.5时,得到R * 0.5 + 255 * 0.5(半个半)

这适用于任何颜色,不仅仅是白色,您只需要将红色,绿色和蓝色的255替换为要与其混合的颜色,并获得RGB平均混合。