Newsgroup: it.comp.java
Titolo: Scrivere un oggetto Image sul disco fisso

Come da oggetto, cosa usereste per memorizzare un oggetto Image sull'hard
disk, in maniera che sia leggibile da un qualsiasi programma di grafica (ad
esempio, come .jpg)?
Sto spulciando la documentazione ma non trovo niente...
--------------------------------
Inviato via 
http://usenet.libero.it

ma non trovo niente...
Male.
Fai una ricerca con 
groups.google.com
 su questo ng indicando
jpg or jpeg
e troverai molto materiale.
Inoltre c'è anche 
http://developer.java.sun.com/developer/earlyAccess/imageio/
HTH
-- 
Ciao
	Fabrizio C.

 Fabrizio C.
Dunque, con la ricerca non ho trovato rispondenze. Forse non ho cercato
bene, non so...
Ora, io stavo tentando di farlo usando ImageIO, ImageInputStream e
ImageOutputStream, ma ho dei problemi, dovuti al fatto che l'oggetto da
salvare, è originato da un file presente nel disco rigido, ma modificato
(ridimensionato, per la precisione).
Quindi, provando una cosa del tipo:
public void save(){
 
	int leggi = 0;
 
	try{
	File origine = new File(percorsoFile);
	File destinazione = new File("prev"+percorsoFile);
 
	ImageInputStream ins = ImageIO.createImageInputStream(scaledImg);
	ImageOutputStream outs = ImageIO.createImageOutputStream(destinazione);
 
	while (leggi != -1){
	leggi = ins.read();
	outs.write(leggi);
	System.out.println("Scrittura in corso..." + leggi);
	}
         }
 
        catch(IOException e){
	System.out.println("Errore di I/0: "+e.toString());
        }
}
Non approdo a nulla, perché CreateImageInputStream vuole un oggetto File,
readable RandomAccessFile, o InputStream. Io invece ho bisogno di leggere il
mio Oggetto Immagine, che non esiste sull'HD --- e per l'appunto, ce lo
voglio salvare! ---
Suggerimenti?


Ok, credo di aver trovato qualcosa...
Solamente, il metodo che ho trovato implica l'utilizzo di alcuni package
aggiuntivi della sun
(com.sun.image.codec.jpeg).
Non è che qualcuno (per caso) ha fatto una cosa del genere, senza
appoggiarsi a questi package?
Saluti a tutto il newsgroup


 appoggiarsi a questi package?
Io ho fatto cosi' (come suggeritomi sul ng)
L'applicazione crea un'immagine come composizione di altre immagini (di
dimensione fissa) e salva su disco.
J2SDK 1.4.0
import com.sun.image.codec.jpeg.*;
::::::::zip::::
   Toolkit toolkit = Toolkit.getDefaultToolkit();
   Image tImg0 = toolkit.getImage("img1.jpg");
   Image tImg1 = toolkit.getImage("img2.jpg");
   Image tImg2 = toolkit.getImage("img3.jpg"); 
   BufferedImage bi =
this.getGraphicsConfiguration().createCompatibleImage(width,height);
   Graphics g2 = bi.createGraphics();
   g2.drawImage(tImg0,0,0,this); 	
   g2.drawImage(tImg1,47,0,this);
   g2.drawImage(tImg2,94,0,this);
   try {
	FileOutputStream fileOutputStream = new FileOutputStream("JPROVA.jpg");
	JPEGImageEncoder jie = JPEGCodec.createJPEGEncoder(fileOutputStream);
	jie.encode(bi);
	fileOutputStream.flush();
	fileOutputStream.close();
   }
   catch (Exception e) { e.printStackTrace(); }
HTH
Stefano

 Suggerimenti?
Si, prova con questa classe:
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import java.awt.Image;
import java.awt.image.ImageObserver;
import java.awt.image.BufferedImage;
import java.io.*;
public class ImageSaver {
   /**
    * encode a BufferedImage in Jpeg format and save it in a file
    * @param img the image to save
    * @param file a File object describing where we want to save the jpeg image
    * @throws java.io.IOException if the image cannot be encoded and/or saved
    */
   public static void write (Image img,File file) throws IOException {
   //save the BufferedImage as a jpeg
      BufferedImage bi=null;
      try {
         if (!(img instanceof BufferedImage)) {
             ImageObserver io=new ImageObserver() {
                   public boolean imageUpdate(Image im, int info,int x, int y, 
int w, int h) {
                      return false;
                   }
             };
            bi = new BufferedImage(img.getWidth(io),img.getHeight(io), 
BufferedImage.TYPE_INT_RGB);
            bi.getGraphics().drawImage(img,0,0,io);
            img=bi;
         } else
            bi=(BufferedImage)img;
         FileOutputStream out = new FileOutputStream(file);
         JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
         JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);
         param.setQuality(1.0f, false);
         encoder.setJPEGEncodeParam(param);
         encoder.encode(bi);
         // or JDK 1.4
         // ImageIO.write(image, "JPEG", out);
      } catch (Exception e) {
         throw new IOException("Failed to save image, reason: "+e);
      }
   }
}
ciao
Marco

 [CUT]
Grazie a tutti quelli che hanno risposto, siete stati molto disponibili.
Ora, se volessi fare la stessa cosa, ma con delle gif, devo scaricare un
altro package aggiuntivo (se sì, magari ditemi quale) oppure si può
risolvere con le classi "standard"?


 risolvere con le classi "standard"?
Vedi 
www.acme.com
 (GifEncoder)
Ciao,
 Stefano
----------
"X WindowSSS, teSSSoro mio... lo odieremo per SSSempre"
Bill Gollum
----------