Newsgroup: it.comp.java
Titolo: Immagini e JPG codec

Ciao a tutti,
da un oggetto Image come faccio a trasformarlo in BufferedImage per poter
utilizzare il jpg encoding??
Praticamente io ho la mia image faccio la scala di questa image poi dovrei
salvarla su file come jpg...
come posso fare???
con una cosa cosě leggo il file e lo scrivo ma come posso ridimensionare l'
immagine???
File file = new File("d:/prova.jpg");
File f = new File("d:/logo.jpg");
FileInputStream inStream = new FileInputStream(f);
JPEGImageDecoder imgdec = JPEGCodec.createJPEGDecoder(inStream);
BufferedImage bi = imgdec.decodeAsBufferedImage();
a questo punto dal bufferd image dovrei ricavarmi l' image fare il
getScaledInstance, riprendere l' immagine e convertirla in bufferdimage ma
come??????
FileOutputStream out = new FileOutputStream(file);
JPEGImageEncoder imgenc = JPEGCodec.createJPEGEncoder(out);
imgenc.encode(bi);
out.close();
ciao e grazie del vostro tempo ; )
ciao, marco

 ciao e grazie del vostro tempo ; )
Di nulla
Ciao
--
..::^^::..::^^::..::^^::..::^^::..::^^::..::^^::..::^^
Ettore Iacomussi
Ecommerce, Multimedia
Web and Wap Applications
ett...@xtreme-multimedia.com
http://www.xtreme-multimedia.com
..::^^::..::^^::..::^^::..::^^::..::^^::..::^^::..::^^


ti riporto un esempio scritto da Castagna 
ciao_O
/*
 DemoBufferedImage - Demo of using java.lang.System class
 Java Code by Castagna
*/
import java.io.*;
import java.awt.*;
import java.awt.image.*;
import com.sun.image.codec.jpeg.*;
public class DemoBufferedImage {
 
  public static void main(String args[]) {
    if(args.length < 3) {
      System.out.println("Usage: java DemoBufferedImage <input file 1> <input file 2> <output
file>");
      System.exit(1);
    }
 
    try {
      String inputFileName1 = args[0];
      String inputFileName2 = args[1];
      String outputFileName = args[2];
 
      FileInputStream fileInputStream1 = new FileInputStream(inputFileName1);
      FileInputStream fileInputStream2 = new FileInputStream(inputFileName2);
 
      JPEGImageDecoder jid1 = JPEGCodec.createJPEGDecoder(fileInputStream1);
      JPEGImageDecoder jid2 = JPEGCodec.createJPEGDecoder(fileInputStream2);
 
      BufferedImage bi1 = jid1.decodeAsBufferedImage();
      BufferedImage bi2 = jid2.decodeAsBufferedImage();
 
      fileInputStream1.close();
      fileInputStream2.close();
 
      int width;
      int height;
 
      if (bi1.getHeight() < bi1.getWidth()) {
        width = 100;
        height = (bi1.getHeight()*100)/bi1.getWidth();
      }
      else {
        width = (bi1.getWidth()*100)/bi1.getHeight();
        height = 100;        
      }
 
      Image img = bi1.getScaledInstance (width, height, Image.SCALE_SMOOTH);
      BufferedImage scaled = new BufferedImage (bi2.getWidth(), bi2.getHeight(),
BufferedImage.TYPE_INT_RGB);
      Graphics g = scaled.getGraphics();
      g.drawImage (bi2, 0, 0, null);
      g.drawImage (img, (bi2.getWidth() - width)/2, (bi2.getHeight() - height)/2, null);
      g.setColor (Color.black);
      g.drawRect (((bi2.getWidth() - width)/2) - 1, ((bi2.getHeight() - height)/2) - 1, width + 2,
height + 2);
      g.setColor (Color.darkGray);
      g.drawRect (((bi2.getWidth() - width)/2), ((bi2.getHeight() - height)/2), width, height);
      /* Outer glow!
      g.setColor (Color.yellow);
      g.drawString("Sorayama", 41, 123);
      g.drawString("Sorayama", 41, 124);
      g.drawString("Sorayama", 41, 125);
      g.drawString("Sorayama", 42, 123);
      g.drawString("Sorayama", 42, 125);
      g.drawString("Sorayama", 43, 123);
      g.drawString("Sorayama", 43, 124);
      g.drawString("Sorayama", 43, 125);
      */
      g.setColor (Color.black);
      g.drawString("Sorayama", 42, 124);
      g.drawString(bi1.getWidth() + "x" + bi1.getHeight(), 48, 25);
      FileOutputStream fileOutputStream = new FileOutputStream(outputFileName);
      JPEGImageEncoder jie = JPEGCodec.createJPEGEncoder(fileOutputStream);
      jie.encode(scaled);
      fileOutputStream.flush();
      fileOutputStream.close();
    } 
    catch(Exception e) {
      System.out.println(e);
    }
 
    System.exit(0);
 
  } // end main
 
} // end DemoBufferedImage
PS:
che fine ha fatto Castagna?
_______________________________________
http://jame.sourceforge.net
 
[ last release jame4.2e ]
_______________________________________
http://digilander.iol.it/schiele

come??????
[CUT]
Non "ma come?", devi chiederti "ma perché?"!
Non dimenticarti che BufferedImage extends Image, cioè BufferedImage
E' un Image (ereditarietà), perciò ha (anche) tutti i metodi pubblici
di Image. Compreso getScaledInstance. ;-)
Poi, l'esempio del mitico Castagna (quando torna?!), te lo ha già
spedito Andrea Medeghini, perciò ora non dovresti più avere
problemi... ;-)
HTH
-- 
Ciao
	Fabrizio C.

 PS: che fine ha fatto Castagna?
..ricordo un suo messaggio di saluto con l'accenno ad una laurea in
gioco e qualche problema di troppo ancora da risolvere (di quand'era? 3,
4 mesi fa forse...). Se/quando tornera` ricordatevi di chiamarlo
"dottore"! ;-)
un Matteo che ha sostenuto giusto oggi un esame ma la laurea ancora...
-- 
Ciao,  |     Gott weiss ich will kein Engel sein
Matteo |                     -- Rammstein, Engel

un Matteo che ha sostenuto giusto oggi un esame ma la laurea ancora...
quel messaggio lo ricordo anch'io
da allora e' sparito completamente
ciao_O


 problemi... ;-)
Effettivamente ora ho risolto ; )
cmq grazie a tutti ; )
Solo una cosa.... le immagini vengono un pò bruttine ; )
come posso migliorare la qualità???
ciao marco

come posso migliorare la qualità???
Se puoi, usa Graphics2D, ma per le immagini non credo che aiuti molto.
Inoltre se il problema è avere le immagini "sgranate" perché le
ingrandisci... c'è poco da fare (forse con degli algoritmi frattali,
qualcosa...).
Comunque dai un'occhiata qui
http://java.sun.com/docs/books/tutorial/2d/images/filtering.html
Se invece, con Graphics2D, lavori con primitive (linee, cerchi, ecc.)
avrai miglioramenti settando opportunamente i RenderingHints
(antialiasing, ecc.)


Ciao
grazie mille della risposta!!!