PDA

View Full Version : [java] Salvataggio immagine jpg


ceccoggi
07-09-2007, 04:25
Salve a tutti, ho sviluppato un paint in java x l'università, ora mancherebbe solo il salvataggio dell'immagine creata in jpg, qualcuno mi spiega come si fa?
Praticamente tutti i disegni fatti dell'utente sono su un JPanel..

grazie a quanti risponderanno!

andbin
07-09-2007, 09:48
Praticamente tutti i disegni fatti dell'utente sono su un JPanel..Sì ok ma come sono memorizzati? Su un BufferedImage? Perché in tal caso basta usare la classe javax.imageio.ImageIO e uno dei suoi metodi write() (vedi javadoc)

PGI-Bis
07-09-2007, 12:48
Credo che non abbia l'immagine ma il semplice accumulo di operazioni di disegno sul pannello.

Comunque, per salvare un BufferedImage vale quanto detto da andbin:

ImageIO.write(immagine, "jpg", new File(il percorso);

Per salvare un Image è quasi la stessa cosa. Prima tenta una conversione a RenderedImage (al 99.9% l'immagine "vera" è una RenderedImage):

Image immagine = ...
if(immagine instanceof RenderedImage) {
ImageIO.write((RenderedImage)immagine, "jpg", new File(il percorso));
}

altrimenti crei un buffer temporaneo:

BufferedImage temp = new BufferedImage(
immagine.getWidth(null),
immagine.getHeight(null),
BufferedImage.TYPE_INT_RGB);

copi su quel buffer l'immagine:

Graphics2D graphics = (Graphics2D)temp.createGraphics();
graphics.drawImage(immagine, 0, 0, null);

e salvi il buffer temporaneo:

ImageIO.write(temp, "jpg", new File(...));

Nel caso in cui tu non disponga di un'immagine ma solo del contenuto del pannello, tutto ciò che devi fare è creare un BufferedImage delle dimensioni del pannello, prendere il suo Graphics2D e passarlo al metodo "print" del pannello. Il pannello copierà sull'immagine il proprio contenuto e avrai qualcosa di salvabile.