Hi Curtis,
It worked perfectly.
Thanks,
Ricardo
----- Original Message -----
From: "Curtis Rueden" <curtis@xxxxxxxxxxxxx>
To: "Ricardo Mantilla" <ricardo@xxxxxxxxxxxxxxxxxx>
Sent: Monday, June 23, 2003 4:26 PM
Subject: Re: saving images on a linux box
> Hi Ricardo,
>
> That JPEG logic uses the com.sun.image.codec.jpeg package.
> Sun has always stated that the com.sun.* packages are not
> stable or supported (that is, they are internal packages
> that strictly speaking, we developers are not supposed to
> be using extensively).
>
> So, the problem is likely that there is an issue with that
> package on J2sdk1.4.1_03 on Linux. First, I suggest trying
> J2sdk1.4.2 beta, since I know it fixes lots of bugs. If
> that doesn't work, you could use the ImageJ functionality
> that is included with the VisAD distribution:
>
> import ij.io.FileSaver;
> ...
> Image img = display.getImage();
> File file = new File("outfile.jpg");
> FileSaver saver = new FileSaver(new ImagePlus("null", img));
> saver.saveAsJpeg(file);
>
> -Curtis
>
> At 11:47 AM 6/23/2003, you wrote:
> >Hi all,
> >
> >I am having problems to save a capured image ( display.getImage() ) on my
Linux box the code I am using is the same that is implemented for the
FancySSCell and BasicSSCell.captureImage();
> >
> >The code works fine on my windows Laptop but when I use the very same
code on my Linux Box I get the following exception:
> >
> >java.lang.ClassCastException
> > at
sun.awt.image.codec.JPEGImageEncoderImpl.encode(JPEGImageEncoderImpl.java:40
5)
> > at
sun.awt.image.codec.JPEGImageEncoderImpl.encode(JPEGImageEncoderImpl.java:22
8)
> > at AspectRatio.saveImage(AspectRatio.java:244)
> > at AspectRatio.access$100(AspectRatio.java:41)
> > at AspectRatio$4.run(AspectRatio.java:215)
> > at java.lang.Thread.run(Thread.java:536)
> >
> >(Note: The exception is reported in the line encoder.encode(image); of
the attached code)
> >
> >I am using the lastest J2sdk1.4.1_03 on both my Windows and Linux
machine.
> >
> >This is the code that I fire when I press a button:
> >
> > private void snapshotActionPerformed(java.awt.event.ActionEvent evt)
{
> > javax.swing.JFileChooser fc=new javax.swing.JFileChooser();
> > javax.swing.filechooser.FileFilter jpgFilter = new
visad.util.ExtensionFileFilter("jpg","JPEG File");
> > fc.addChoosableFileFilter(jpgFilter);
> > fc.showSaveDialog(this);
> >
> > if(fc.getSelectedFile() == null) return;
> >
> > final java.io.File f=fc.getSelectedFile();
> > Runnable captureImage = new Runnable() {
> > public void run() {
> > String msg = "Could not save image snapshot to file \"" +
f.getName() +
> > "\" in JPEG format. ";
> > try {
> > saveImage(f);
> > }
> > catch (visad.VisADException exc) {
> > msg = msg + "An error occurred: " + exc.getMessage();
> > javax.swing.JOptionPane.showMessageDialog(mainFrame, msg,
"Error saving data",
> > javax.swing.JOptionPane.ERROR_MESSAGE);
> > }
> > catch (IOException exc) {
> > msg = msg + "An I/O error occurred: " + exc.getMessage();
> > javax.swing.JOptionPane.showMessageDialog(mainFrame, msg,
"Error saving data",
> > javax.swing.JOptionPane.ERROR_MESSAGE);
> > }
> > }
> > };
> > Thread t = new Thread(captureImage);
> > t.start();
> > }
> >
> > private void saveImage(java.io.File f) throws visad.VisADException,
java.io.IOException {
> > java.awt.image.BufferedImage image = display.getImage();
> >
> > try {
> > if(!f.getName().endsWith(".jpg")){
> > f= new java.io.File(f.getPath()+".jpg");
> > }
> > JPEGEncodeParam param
JPEGCodec.getDefaultJPEGEncodeParam(image);
> > param.setQuality(1.0f, true);
> > FileOutputStream fout = new FileOutputStream(f);
> > JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fout);
> > encoder.encode(image);
> > fout.close();
> > }catch (NoClassDefFoundError err) {
> > System.err.println("Error: "+err);
> > err.printStackTrace();
> > }
> > }
> >
> >Thanks in advance for the help you can provide me with,
> >
> >Ricardo