2008-11-10 9 views
1

J'ai une image sur laquelle je veux montrer des projecteurs, comme ils le font à la télévision. Le reste de l'image devrait être plus sombre que l'original, et la personne que je suis en train de mettre en lumière devrait être normale. J'ai le x, y et le rayon du projecteur, mais je ne suis pas sûr de savoir comment changer la luminosité à cet endroit. De plus, si j'ai deux projecteurs et qu'ils se croisent, l'intersection devrait être plus brillante que l'un ou l'autre des projecteurs.Comment ajouter des projecteurs à une image

Répondre

0

Une manière simple est de convertir la couleur en HSL, de baisser L pour assombrir, d'augmenter pour éclaircir, puis de revenir à RGB et de régler le pixel.

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

+0

La conversion en HSL et vice versa est probablement exagérée pour cela - il suffit de multiplier les pixels non surlignés par ex. 0,8 pour chacun des composants R, G, B. – Alnitak

1

Utilisez RescaleOp sur l'image originale et sous-images. Étant donné que vous avez une image tamponnée (appelée biDest) qui contient l'image, appelez RescaleOp (0.6, 0, null) pour l'assombrir. Ensuite, pour ajouter un projecteur (rectangulaire), appelez ce qui suit:

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(); 
    } 
Questions connexes