如何为图像添加聚光灯

时间:2008-11-10 15:01:13

标签: java

我有一张图片,我希望在电视上播放一些“聚光灯”。图像的其余部分应该比原始图像更暗,而我所关注的人应该是正常的。我有聚光灯的x,y和半径,但我不知道如何改变那个位置的亮度。

此外,如果我有两个聚光灯并且它们相交,则交叉点应该比任何一个聚光灯更亮。

2 个答案:

答案 0 :(得分:1)

在原始图像和子图像上使用RescaleOp。假设您有一个包含图像的缓冲图像(称为biDest),请在其上调用RescaleOp(0.6,0,null)以使其更暗。然后,要添加(矩形)聚光灯,请调用以下内容:

    public void spotLight(int x, int y, int w, int h)
    {
        BufferedImage i = biDest.getSubimage(x, y, w, h);

        RescaleOp rescale = new RescaleOp(SPOTLIGHT_BRIGHTNESS, 0, null);
        rescale.filter(i, i);

        repaint();
    }

答案 1 :(得分:0)

一种简单的方法是将颜色转换为HSL,将L降低到变暗,增加到变亮,然后转换回RGB并设置像素。

http://www.mpa-garching.mpg.de/MPA-GRAPHICS/hsl-rgb.html