Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将聚光灯添加到图像_Java - Fatal编程技术网

Java 如何将聚光灯添加到图像

Java 如何将聚光灯添加到图像,java,Java,我有一个图像,我想显示一些“聚光灯”,就像在电视上一样。图像的其余部分应该比原图暗,我要拍摄的人应该是正常人。我有聚光灯的x、y和半径,但我不确定如何更改该位置的亮度 另外,如果我有两个聚光灯并且它们相交,那么相交点应该比任何一个聚光灯都亮 一个简单的方法是将颜色转换为HSL,将L降低为变暗,增加为变亮,然后再转换回RGB并设置像素 一个简单的方法是将颜色转换为HSL,将L降低为变暗,将L增加为变亮,然后再转换回RGB并设置像素 对原始图像和子图像使用“重新缩放”。假设您有一个包含该图像的缓冲图

我有一个图像,我想显示一些“聚光灯”,就像在电视上一样。图像的其余部分应该比原图暗,我要拍摄的人应该是正常人。我有聚光灯的x、y和半径,但我不确定如何更改该位置的亮度


另外,如果我有两个聚光灯并且它们相交,那么相交点应该比任何一个聚光灯都亮

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


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


对原始图像和子图像使用“重新缩放”。假设您有一个包含该图像的缓冲图像(称为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();
    }

对原始图像和子图像使用“重新缩放”。假设您有一个包含该图像的缓冲图像(称为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();
    }

对于这一点,转换为HSL并再次转换可能是过度杀伤力-对于每个R、g、B组件,只需将未高亮显示的像素乘以例如0.8。对于这一点,转换为HSL并再次转换可能是过度杀伤力-对于每个R、g、B组件,只需将未高亮显示的像素乘以例如0.8。