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