Newsgroup: it.comp.java
Titolo: Jai e sovrapposizione di due immagini

Ciao a tutti,
per un progetto ho la necessità di elaborare delle immagini.
Ho guardato e utilizzato le librerie JAI ma trovo difficoltà nel
sovrapporre due immagini: La prima deve fungere da background la
seconda deve essere posizionata all'interno della prima immagine
background in base a delle coordinate che verranno passate e infine
salvare in un immagine unica.
Spero che qualcuno abbia affrontato già il problema e mi possa dare
delle dritte.
Riporto il codice che aimè non è funzionante.
 String filename = "test1.jpg";
 String filename1 = "baffo.jpg";
 RenderedImage src1 = JAI.create("fileload", filename);
 RenderedImage src2 = JAI.create("fileload", filename1);
 ParameterBlock pb = new ParameterBlock();
 pb.add((float)5);
 pb.addSource(src1);
 ParameterBlock pb1 = new ParameterBlock();
 pb1.add((float)5);
 pb1.addSource(src2);
		 //src2 = JAI.create("add", pb, pb1);
		 ParameterBlock pbf = new ParameterBlock();
		 pbf.addSource(src1);
		 pbf.addSource(src2);
		  //PlanarImage target = null;
		 RenderedImage op = JAI.create("add", src1, src1);
		 System.out.println("ok");
		 BufferedImage bi = MultiPageRead.fromRenderedToBuffered(op);
	     try {
         	File f = new File("jetta.jpg");
             ImageIO.write(bi, "jpg", f);
         }catch (IOException e) {
         	System.out.println(e.getMessage());
         }

 salvare in un immagine unica.
Io ho fatto qualcosa del genere, ma non ho utilizzato JAI nè
RenderedImage... ti interessa lo stesso?
Vanni

Eccome, te ne sarei grato
dimmi tutto
vannyn ha scritto:


 dimmi tutto
Ho creato un JFrame su cui stampo due immagini in cue posizioni
diverse. Poi chiamo il metodo stampa che salva tutto il frame in un
file (che si trova nella stessa cartella del class).
Spero sia utile!
ciao
/*
 * Vanni G. Rizzo
 * 
va...@ascoltalatuasete.it
 * JFrame che mostra 2 (o più) immagini sovrapposte
 */
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
public class Immagini extends JFrame {
	static Immagini frame;
	public static void main(String[] args){
		System.out.println("Inizio");
		frame = new Immagini();
		salva();
	}
	Immagine vett[];
	public Immagini(){
		super();
		vett = new Immagine[]{
				new Immagine("uno.gif",0,0),
				new Immagine("due.gif",100,100)
				//puoi aggiungere tante immagini qui quante ne vuoi
				//i parametri sono nomefile, posizione x, posizione y
		};
		setBounds(50,50,500,500);
		setVisible(true);
		repaint();
	}
	public static void salva(){
		BufferedImage bImage = new
BufferedImage(500,500,BufferedImage.TYPE_INT_ARGB);
		Graphics2D g2 = bImage.createGraphics();
		frame.paint(g2); //su 'g2' viene disegnato il contenuto del
frame
		g2.dispose(); //libera le risorse allocate per 'g2'
		g2 = null;
		try{
			File f = new File("immaginefinale.png");
			System.out.println("L'immagine si trova nella stessa cartella della
class e si chiama : " + "immaginefinale.png");
			ImageIO.write(bImage, "PNG", f);
		}
		catch(IOException ioe){
			ioe.printStackTrace();
		}
	}
	public void paint(Graphics g){
		for(int i=0; i<vett.length ; i++){
			if(vett[i].image != null ){
				g.drawImage(vett[i].image, vett[i].x, vett[i].y, this);
			}
		}
	}
	public class Immagine{
		Image image = null;
		int x=0, y=0;
		public Immagine(String fn, int _x, int _y){
			try {
				image = (ImageIO.read(Immagini.class.getResource(fn)));
				x = _x;
				y = _y;
			} catch (IOException e) {
				System.out.println("Error");
				e.printStackTrace();
			}
		}
	}
}

Ti devo una birra...facciamo due
;-)
vannyn ha scritto:
