1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
/**
* Crée un ColorModel permettant de mettre l'ensemble des pixels
* en nuance de vert.
* @return
*/
private ColorModel createColorModel() {
int nbBits = 8;
//int val = new Double( Math.pow( 2, nbBits ) ).intValue();
int val = 1 << nbBits;
byte[] r = new byte[ val ];
byte[] g = new byte[ val ];
byte[] b = new byte[ val ];
for (int i = 0; i < r.length; i++) {
r[i] = (byte) 0;
g[i] = (byte) i;
b[i] = (byte) 0;
}
return new IndexColorModel( nbBits, val, r, g, b );
}
public void createComposite( float alpha )
{
BufferedImage buffer = new BufferedImage( Math.max( imgTimbre.getWidth(), imgSubstrat.getWidth() ),
Math.max(imgTimbre.getHeight(), imgSubstrat.getHeight()),
imgTimbre.getType() );
Graphics2D g2 = (Graphics2D) buffer.getGraphics();
g2.drawImage( imgSubstrat, null, null );
//Légère transparence
g2.setComposite( AlphaComposite.getInstance( AlphaComposite.SRC_OVER, alpha ) );
//Création d'une image en niveau de vert de la 2eme image
BufferedImage imageTimbreVerte = new BufferedImage( createColorModel(),
imgTimbre.getRaster(),
false,
null );
g2.drawImage( imageTimbreVerte, null, null );
g2.dispose();
setImgFinaleSuperposition( buffer );
} |
Partager