Ciao a tutti,
ho un problema banale ma che non riesco a risolvere,devo scrivere una sequenza di numeri in formato di matrice (es 20x20) per poiricostruire una immagine, il problema è che quando scrivo mi va a capo nel file di testo dopo ogni numero...
Come risolvo?
Posto il codice:
codice:
public static ImageProcessor periodicWaterMarking(ImageProcessor a,int nx,int ny,ImageProcessor b,int nx_b,int ny_b) {
ImageProcessor processed = a.duplicate();
ImageProcessor processed_b = b.duplicate();
PrintStream output=null;
try {
output = new PrintStream(new FileOutputStream("/home/erpupone/ImageJ/plugins/WaterMarking/mtx.txt"));
}
catch(Exception e) { }
int cont=0,mult,numPixels=0;
String linea="";
double passo; //variabile che indica ogni quanti pixel inserine uno 'markato'
passo = Math.floor((nx*ny)/(nx_b*ny_b));
int[] array = new int[4];
int[] array_b = new int[4];
IJ.write("Numero pixel immagine Originale: "+(nx*ny)+" Immagine da nascondere: "+(nx_b*ny_b));
IJ.write("Passo: "+passo+" Raggiunti: "+(nx_b*ny_b*passo));
for(int x=0;x<nx;x++){
linea="";
for(int y=0;y<ny;y++) {
if((cont % (int)passo)==0 && numPixels<=(nx_b*ny_b)) {
numPixels++;
//genero random la sequnza di +/- 1
if(Math.random()>=0.5) mult=1;
else mult=-1;
linea = linea+""+mult+" ";
array = processed.getPixel(x,y,array);
array_b = processed_b.getPixel(x,y,array_b);
IJ.write("Pixel ("+x+","+y+") R: "+array[0]+" G: "+array[1]+" B: "+array[2]);
if(mult==1) {
array[0]=array[0]+array_b[0];
array[1]=array[1]+array_b[1];
array[2]=array[2]+array_b[2];
}
else if(mult==-1) {
array[0]=array[0]-array_b[0];
array[1]=array[1]-array_b[1];
array[2]=array[2]-array_b[2];
}
if(array[0]>255) array[0]=array[0] % 255;
else if(array[0]<0) array[0]=Math.abs(array[0]);
if(array[1]>255) array[1]=array[1] % 255;
else if(array[1]<0) array[1]=Math.abs(array[1]);
if(array[2]>255) array[2]=array[2] % 255;
else if(array[2]<0) array[2]=Math.abs(array[2]);
IJ.write("Pixel ("+x+","+y+") R: "+array[0]+" G: "+array[1]+" B: "+array[2]);
processed.putPixel(x,y,array);
}
cont++;
}
//comando che effettua la stampa
try {output.print(""+linea+"\n");} catch(Exception e){}
}
IJ.write("cont: "+cont+" numPixels: "+numPixels);
try {output.close();} catch(Exception e){}
//valuta il pSNR
WaterMarking.getpSNR(a,processed,nx,ny);
return processed;
}
grazie
Ciao
Giovanni