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