Salve ragazzi!
E' la prima volta che posto.
Sono alle prese con un progetto java di elaborazione di immagini.
Per prima cosa ricavo il vettore di pixel da un' immagine con queste istruzioni:
BufferedImage image = ImageIO.read(new File("metro.jpg"));
BufferedImage buffImage = new BufferedImage(imgCols,imgRows,BufferedImage.TYPE_I NT_ARGB);
Graphics2D graphics = buffImage.createGraphics();
graphics.drawRenderedImage(image, null);
DataBufferInt dataBufferInt = (DataBufferInt)buffImage.getRaster().getDataBuffer ();
int[] pixels = dataBufferInt.getData();
...dopodichè elaboro tale vettore(pixels) in modo da nascondere un messaggio di testo nei bit meno significativi dei byte dei vari pixel.
Una volta modificato il vettore salvo l' immagine modificata:
* BufferedImage buffImage2 = new BufferedImage(imgCols,imgRows,BufferedImage.TYPE_I NT_ARGB);
WritableRaster r=buffImage2.getRaster();
r.setDataElements(0,0,imgCols,imgRows,pixels);
buffImage2.setData(r);
...e poi la scrivo con:
** String ext="png";
ImageIO.write(buffImage2,ext,new File("Image."+ext));
Il problema è che nell' estrarre il messaggio di testo nascosto nell' immagine in alcuni casi mi scambia alcuni caratteri con altri (ad esempio lo spazio con lo zero(non tutti gli spazi),la 'a' con la 'm',la p con la '@'),mentre a volte fila tutto liscio.
Con delle stampe a video ho verificato che il vettore pixel modificato non contiene errori:il problema probabilmente sorge nel momento in cui creo la nuova immagine dal vettore di pixel(e la scrivo) .
Ho provato anche con:
Image modImg = createImage(new MemoryImageSource(imgCols,imgRows,pixels,0,imgCols ));
per creare un Image,anzichè una BufferedImage ma il problema rimane.
Spero che qualcuno di voi abbia già avuto a che fare con problemi simili o mi sappia indicare un modo per compiere il passaggio inverso rispetto a "buffImage.getRaster().getDataBuffer().getData()". (creare un' immagine da un vettore di pixel)
Grazie anche solo se vi siete letti tutta 'sta manfrina.