The mime type of the content of the clipboard when checked via
.isDataFlavorAvailable(DataFlavor.imageFlavor)
is image/x-java-image (but OS vendors do not need to follow MIME types for clipboards).
I found two ways to supposedly get an image from a clipboard and write it to a file:
Using a helper method found in this blog post: The nightmares of getting images from the Mac OS X clipboard using Java.
Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard() ImageIcon IMG = new ImageIcon((BufferedImage) clip.getData(DataFlavor.imageFlavor)); BufferedImage bImage = getBufferedImage(IMG.getImage()); ImageIO.write(bImage, "png", new File("/tmp/test.png"));
The
getBufferedImage
method looks like this:public static BufferedImage getBufferedImage(Image img) { if (img == null) { return null; } int w = img.getWidth(null); int h = img.getHeight(null); // draw original image to thumbnail image object and // scale it to the new size on-the-fly BufferedImage bufimg = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB); Graphics2D g2 = bufimg.createGraphics(); g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); g2.drawImage(img, 0, 0, w, h, null); g2.dispose(); return bufimg; }
Via Transferable. Note that this runs on OS X but produces an empty image of the correct size:
Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard() Transferable content = clip.getContents(null); BufferedImage img = (BufferedImage) content.getTransferData( DataFlavor.imageFlavor); ImageIO.write(img, "png", new File("/tmp/test.png"));