Newsgroup: it.comp.java
Titolo: JMF API FrameGrabbingControl-BufferToImage

Salve a tutti,
sono alle prime armi col Java,infatti stavo studiando le JMF API nel
tentativo di estrarre dei frame da un filmato e salvarli su disco.
Un estratto dal codice che ho scritto è:
public class Seek extends Frame implements ControllerListener,
ActionListener {
    FrameGrabbingControl fgc;
  ...
fgc=(FrameGrabbingControl)p.getControl("javax.media.control.FrameGrabbingControl");
     ...
    ...
    Buffer buff1= new Buffer();
     buff1 =fgc.grabFrame();
     BufferToImage bti = new BufferToImage(buff1.getFormat());
      Image imm = bti.createImage(buff1);
be',a questo punto mi dice che non trova il costruttore
BufferToImage,come mai?
eppure se uso la classe duale,e cioè ImageToBuffer tutto fila liscio..
Dove Sbaglio?
Qualcuno mi aiuti!!!!!!!!
Un saluto a tutti
PISI

Sicuro di aver importato tale classe?
P.S. ma che roba č? Sono classi tue proprietarie oppure č un package
aggiuntivo? Se č un'altro package mi dici dove lo trovo?

aggiuntivo? Se č un'altro package mi dici dove lo trovo?
E' un package multimediale della sun,lo trovi in
http://java.sun.com/products/java-media/jmf/
Ciao

 Dove Sbaglio?
Affinchč le righe di codice che hai scritto funzionino correttamente devi
prima riempire il buffer.
A questo indirizzo
http://java.sun.com/products/java-media/jmf/2.1.1/solutions/index.html
trovi diversi esempi ma non ho idea se c'č anche quello che ti serve. Io
avevo usato la JMF per catturare ed elaborare immagini provenienti dalla
videocamera ed era stato un lavoro abbastanza complesso ma probabilmente
quello che devi fare tu č qualcosa di piů semplice.
Di certo la JMF non č per chi č alle prime armi con Java.
Ciao

Grazie Mr Blue,ho superato questo scoglio che mi tormentava da
giorniadesso devo salvare il frame estratto come immagine,qualche
suggerimento?
Grazie Infinite


=jdk 1.3
ciao
Marco
package it.belcom.util;
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);
      }
   }
}