[JAVA] Superposer 2 images

XorBrox -  
 kuangsaphir -
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 :-)

2 réponses

  1. kuangsaphir
     
    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
  2. Tewfik
     
    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