जब से मैं इस पर काम अधिक, यह भी देखें:
import java.awt.*;
import java.awt.datatransfer.*;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
import javax.swing.*;
import javax.imageio.ImageIO;
import java.io.File;
public class ClipboardScreenshot {
public static void main(String[] args) throws Exception {
// get the screenshot
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_PRINTSCREEN);
robot.delay(40);
robot.keyRelease(KeyEvent.VK_PRINTSCREEN);
robot.delay(404);
Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
DataFlavor[] flavors = cb.getAvailableDataFlavors();
System.out.println("After: ");
for (DataFlavor flavor : flavors) {
System.out.println(flavor);
if (flavor.toString().indexOf("java.awt.Image")>0) {
Object o = cb.getData(flavor);
Image i = (Image)o;
// ImageIO will not write an Image
// It will write a BufferedImage (a type of RenderedImage)
BufferedImage bi = new BufferedImage(
i.getWidth(null),
i.getHeight(null),
BufferedImage.TYPE_INT_RGB);
Graphics2D g = bi.createGraphics();
g.drawImage(i, 0, 0, null);
g.dispose();
JScrollPane sp = new JScrollPane(new JLabel(new ImageIcon(bi)));
sp.setPreferredSize(new Dimension(800,600));
JOptionPane.showMessageDialog(null, sp);
File f = new File(
System.getProperty("user.home") +
File.separator +
"the.png");
ImageIO.write(bi, "png", f);
}
}
}
}
स्रोत
2012-09-04 14:05:20
कर देखें कि कहीं [ScreenshotUsingPrintScreen] (http://stackoverflow.com/a/12251447/418556) एक 'माइम प्रकार = छवि/एक्स जावा का उत्पादन -image; representationclass = java.awt.Image'। –
समस्या को स्कर्ट करने के लिए दिलचस्प, अच्छा तरीका और विचार। कुछ त्वरित जांच के बाद मुझे क्लिपबोर्ड के बारे में एक त्रुटि मिली। जैसे कि विंडोज़ पर दूसरी प्रक्रिया द्वारा इसका इस्तेमाल किया गया था, मुझे लगता है। – Arsenic
getSystemClipBoard से पहले cb को शून्य करने में इसे हल करने में हल किया गया है, इस तरह यह हर पूर्व विंडोज उपयोग को बस साफ़ करता है। – Arsenic