Writing images to file and copying to the clipboard with jdk 1.4

I noticed that when I use the code suggested in several past emails, as shown 
below, I get an JPEG image file that is the right size, but only a black image 
is written.

import com.sun.image.codec.jpeg.*;

//this is run in its own thread...

    DisplayImpl display = ...;
    BufferedImage image = display.getImage();
    JPEGEncodeParam param = JPEGCodec.getDefaultJPEGEncodeParam(image);
    param.setQuality(1.0f, true);
    FileOutputStream fout = new FileOutputStream(f);
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fout);
    encoder.encode(image, param);
I am using jdk1.4 on W2K platform, but I also tried it with jdk1.3 and the same 
problem occurs.

If instead I use the following with jdk1.4, I can paste to the clipboard and 
the image appears fine in other programs (i.e. Word, PowerPoint, etc.).

//this is run in its own thread...

        BufferedImage image = display.getImage();
        Icon icon = new ImageIcon(image);
        final JLabel label = new JLabel(icon);
        label.setTransferHandler(new ImageSelection());
        Toolkit kit = Toolkit.getDefaultToolkit();
        final Clipboard clipboard = kit.getSystemClipboard();

        TransferHandler handler = label.getTransferHandler();
        handler.exportToClipboard(label, clipboard, TransferHandler.COPY);
jkd1.4 has a new ImageIO class, which simplifies the top example to a single 

     import javax.imageio.ImageIO;

     BufferedImage image = ...;
     File file = ...;
     ImageIO.write(image, "JPEG", file);

However, this doesn't work either.  I checked a few newsgroups, and I think it 
may be a JPEG encoding error in the Sun code.  What does work well is:

     BufferedImage image = ...;
     File file = ...;
     ImageIO.write(image, "PNG", file);

(I prefer PNG over JPEG's anyway, since I use GIMP for image rendering)

Hopefully this may save a few of you some time, if you have the luxury of using 
java 1.4.  I haven't yet checked if other image formats work okay with the 
ImageIO class

Steve Potts, Ph.D.
Informatics Research Scientist
Mountain View, CA
(650) 230-1822

  • 2002 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the visad archives: