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