Originariamente inviato da andbin
...
Quindi non puoi passare banalmente un Image al write(). La soluzione è creare un BufferedImage, scriverci dentro la immagine e quindi passare al write() il BufferedImage.
EUREKA!
questa classe funziona
codice:
import java.awt.*;
import java.awt.datatransfer.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;


public class Clipboard2Img {
    public static void main(String[] args) {
        try {
            Clipboard clipBoard = Toolkit.getDefaultToolkit().getSystemClipboard();
			Transferable t = clipBoard.getContents(null);
			Image image = (Image) t.getTransferData(DataFlavor.imageFlavor);
			
			int width = image.getWidth(null);
            int height = image.getHeight(null);
			//System.out.println("Immagine lunga "+ width+ " e larga "+ height+ " pixels");
			
			BufferedImage bi=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
			Graphics2D g2d = bi.createGraphics();
			
			g2d.drawImage(image, null,null);
			
			
            // Saves the image to a file in JPG format.
            ImageIO.write(bi , "jpg", new File("img.jpg"));
        } catch (Exception e) {
            System.err.println(e);
        }
    }
}
secondo te è il modo migliore o c'è di meglio?

in ogni caso GRAZIE 1000