[JAVA] Superposer 2 images

Fermé
XorBrox - 21 oct. 2005 à 23:03
 kuangsaphir - 16 oct. 2009 à 16:19
Bonjour,

J'essaye d'ecrire une methode qui retourne une instance d'un BufferedImage representant la superposition de 2 images.
Pour cela, dans un premier temps j'essaye seulement de rendre une image transparente.
Apres quelques recherches j'ai vu qu'on pouvait gerer la transparence à partir d'un alphaComposite, mais j'ai fait une methode et ca ne marche pas.

Voici le code :

public BufferedImage createComposite(BufferedImage image, float alpha)
{
Graphics2D g2=image.createGraphics();
Composite newComposite = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha);

g2.setComposite(newComposite);
g2.drawImage(image, null, null);
return image;
}

Toute aide sera la bienvue !! merci :-)
A voir également:

2 réponses

kuangsaphir
16 oct. 2009 à 16:19
Tu peut utiliser le API en java (JAI)
voici de code:

FileSeekableStream stream = null,stream1 = null,stream2=null;
PlanarImage image1 = null,image2= null,image3 = null,resultat=null;
String file1 = "D:/cours ENSISA/cours ENSISA/ENSISA_3A/projet 3A/photo/demo4_HDR/01norm.jpg";
String file2 = "D:/cours ENSISA/cours ENSISA/ENSISA_3A/projet 3A/photo/demo4_HDR/01sous.jpg";
String file3 = "D:/cours ENSISA/cours ENSISA/ENSISA_3A/projet 3A/photo/demo4_HDR/01sur.jpg";
File f1 = new File(file1);
File f2 = new File(file2);
File f3 = new File(file3);

try{
stream = new FileSeekableStream(f1);
stream1 = new FileSeekableStream(f2);
stream2 = new FileSeekableStream(f3);
}catch(IOException ioe)
{
ioe.printStackTrace();
System.exit(1);
}

image1 = JAI.create("stream", stream).getRendering();
image2 = JAI.create("stream", stream1).getRendering();
image3 = JAI.create("stream", stream2).getRendering();

ParameterBlock pb = new ParameterBlock();
pb.addSource(image2);
pb.addSource(image1);
pb.addSource(image3);
resultat = JAI.create("add", pb);

pb.addSource(resultat);
resultat = JAI.create("add", pb);
DisplayJAI display = new DisplayJAI();
display.set(resultat);

jScrollPane1 = new javax.swing.JScrollPane(display);
1
Bonjour,

J'ai déjà fait ce genre de chose en C et OpenGL.
Il suffit de créer une nouvelle image dans laquelle chaque pixel est coloré avec 60% de celle qui sera au dessus et 40% de celle qui sera au dessous.

Tewfik
0