05/05/11 13:08
soulbw
Ciao a tutti, sono alle prime armi ed ho provato a scrivere una funzione che fonde piu jpg in un unico jpg;
La funzione è questa:
Allora vi spiego...la funzione prende in ingresso un bufferedImage[] ottenuto mediande una funzione complementare che esegue lo split dell immagine;
int rows e int cols.... rappresentano le righe e colonne in cui divido l'immagine;
Io per esempio ho diviso con la split l'immagine in 4 parti....(quindi cols = 2, rows = 2) ottenendo cosi un BufferedImage[] e qunado lo passo alla merge per fordere il tutto e ricreare l'immagine originale ....mi crea una nuova immagine in cui solo 1/4 dell'originale è disegnato correttamente ed i restanti 3/4 sono NERii :P
Come mai dove sbaglio???
La funzione è questa:
Ciao grazie sembra perfetta ehehehe:P...solo che un piccolo problema..la mia funzione merge ridisegna solo una parte dell'immagine e non capisco perchè:P!!!!!! Io gli passo un vettore di BufferedImage che contiene 4 elementi...ottenuti tramite la split come richiamo la merge mi ridisegna solo 1/4 (sono un po alle prime armi.....) Cmq la merge è questa non quella che ho postato sopra: public static BufferedImage mergeImage(BufferedImage[] imgFrame, int rows, int cols) { BufferedImage Im = new BufferedImage(imgFrame[0].getWidth() * rows, imgFrame[0].getHeight() *cols, imgFrame[0].getType()); // so che l'array è di un solo tipo int i=0; // devo operare su n elementi di BufferedImage[].. Graphics2D g = Im.createGraphics(); for( int Irows=0; Irows< rows; Irows++) { for(int Icols=0; Icols< cols; Icols++) { // chiedo a Graphics di disegnare su Im width x height // disegno l'immaggine come un collage.....null ultimo parametro non ho bisogno di listener.. g.drawImage(imgFrame[i], 0, 0, imgFrame[i].getWidth(), imgFrame[i].getHeight(), imgFrame[i].getWidth()*Irows, imgFrame[i].getHeight()*Icols, imgFrame[i].getWidth()*Irows+imgFrame[i].getWidth(), imgFrame[i].getHeight()*Icols+imgFrame[i].getHeight(), null); //incremento il valore ogni volta che disegno un frammento i++; } } g.dispose(); return Im; }
Allora vi spiego...la funzione prende in ingresso un bufferedImage[] ottenuto mediande una funzione complementare che esegue lo split dell immagine;
int rows e int cols.... rappresentano le righe e colonne in cui divido l'immagine;
Io per esempio ho diviso con la split l'immagine in 4 parti....(quindi cols = 2, rows = 2) ottenendo cosi un BufferedImage[] e qunado lo passo alla merge per fordere il tutto e ricreare l'immagine originale ....mi crea una nuova immagine in cui solo 1/4 dell'originale è disegnato correttamente ed i restanti 3/4 sono NERii :P
Come mai dove sbaglio???
aaa