Newsgroup: it.comp.java
Titolo: Salvare un immagine

Ho creato un programma che disegna delle figure su di un Canvas tramite il 
metodo paint,ora vorrei salvarle in un file. Come mi consigliate di farlo?

se sono delle semplici figure geometriche potresti creare un file xml
del tipo
<circle x='5' y='20' raggio='15' />
oppure se preferisci
<circle>
     <x>5</x>
    <y>20</y>
    <raggio>15</raggio>
</circle>
potrebbe essere un idea?
se ci spieghi meglio il problema ....
saluti Rob 

 ha scritto nel messaggio 
news:nNOSd.46274$lB4.1...@twister1.libero.it...


 
Mandaci un pezzo di codice,
cosi' che ti aiutiamo.
Di che tipo e' l'oggetto che disegni.
Dai, posta qualcosa...
-- 
            Davide Gurgone
      web: 
http://www.gurgone.it/
mail: davidechiocciolinagurgonepuntoit

 ha scritto nel messaggio 
news:CpXSd.579409$b5.26...@news3.tin.it...


 ciň che io stesso disegno.
[CUT]
Ok!
In che formato lo vuoi salvare? PNG, GIF, JPEG?
a seconda del formato, usi un decoder differente, ma il principio e' 
sempre lo stesso.
Alla fine, il tuo oggetto Graphics manipola l'oggetto di tipo Image.
Quasi tutti gli encoder usano un oggetto di tipo BufferadeImage per 
codificare l'immagine, insieme ad un OutputStream.
L'immagine che hai e' di certo una BufferedImage.
In una mia app. uso l'encoder GIF del package di ACME su 
acme.org
, mi 
pare. Nel caso non lo trovassi, te lo posso mandare.
Il 18.02.2005 alle 16.35 ho postato una servlet che prende in ingresso 
un testo e lo dispone in verticale su di un'immagine e la sputa come 
output dalla servlet.
Dagli un occhio, il proncipio e' lo stesso. solo che anziche' fare:
   // Creo l'encoder gif
   GifEncoder ge = new GifEncoder(img, resp.getOutputStream());
   // Codifico l'immagine in formato gif
   ge.encode();
   // Infine chiudo l'outputStream della servlet.
   resp.getOutputStream().flush();
fai:
   FileOutputStream os = new FileOutputStream(s.toString());
   // Codifico l'immagine come GIF
   GifEncoder ge = new GifEncoder(img, os);
   os.flush();
In cui img e' una BufferedImage, s e' uno StringBuffer che contiene il 
path in cui salvare l'immagine e nel codice usato nelle servlet, resp e' 
l'oggetto di tipo HTTPServletResponse.
Molto semplice, vero???
Ciao,


 ha scritto nel messaggio 
news:SE0Td.580976$b5.26...@news3.tin.it...


 
Per un jpeg io uso qualcosa del tipo:
import com.sun.image.codec.jpeg.*;
import java.io.*;
............................
[zap]
............................
        public boolean writeJPEGImage(BufferedImage bi,String fileName, 
boolean override) {
             if (bi==null) {
                System.out.println("Sorter: L'immagine fornita e' null");
                return false;
             }
             boolean esito = false;
             boolean procedi = false;
             File file = new File(fileName);
             if (file.exists() && file.isFile()) {
                if (file.canWrite()&& override==true) procedi=true;
             }
             else procedi=true;
             if (procedi==false) {
                System.out.println("Sorter: Impossibile scrivere sul 
file "+fileName);
                return false;
             }
             try {
		   	    FileOutputStream fileOutputStream = new 
FileOutputStream(fileName);
             	JPEGImageEncoder jie = 
JPEGCodec.createJPEGEncoder(fileOutputStream);
             	jie.encode(bi);
                 fileOutputStream.flush();
                 fileOutputStream.close();
                 esito=true;
             }
			catch (Exception e) {
			        System.out.println("Impossibile scrivere sul file "+fileName);
                     //debug e.printStackTrace();
                     return false;
             }
             return esito;
        }
HTH
Stefano