2011-11-10 40 views
1

我試圖捕獲圖像質量和大小類似於ALT +打印屏幕。任何人都可以請幫助我一樣嗎?如何捕獲與alt plus打印屏幕相似的圖像?

我嘗試下面的代碼來捕獲:

dimScreenSize = Toolkit.getDefaultToolkit().getScreenSize(); 
rectScreenSize = new Rectangle (dimScreenSize); 
BufferedImage bufimg=robot.createScreenCapture (rectScreenSize); 

捕獲我以前將其存儲在特定的位置的圖像之後,再次我獲取圖像並使用thumbnails調整它。

loc =d_path+"\\a"+m+"a"+".jpg"; 
Thumbnails.of(new File(loc)).size(800, 800).outputQuality(1f).toFile(new File(loc)); 

但是圖像質量太差。請幫我一下,有沒有別的辦法?

+0

什麼是'Thumbnails'? –

回答

1

如果圖像質量不令人滿意,你可以嘗試其他格式,如PNG?

import java.awt.Rectangle; 
import java.awt.Robot; 
import java.awt.Toolkit; 
import java.awt.image.BufferedImage; 
import java.io.File; 

import javax.imageio.ImageIO; 

public class Capture 
{ 
    public static void main(String[] args) throws Exception 
    { 
     Robot robot = new Robot(); 

     BufferedImage screenShot = robot.createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize())); 
     ImageIO.write(screenShot, "png", new File("screenShot.png")); 
    } 
} 
+0

沒有改進本。 – jcrshankar

1
import java.awt.AWTException; 
import java.awt.Robot; 
import java.awt.Toolkit; 
import java.awt.datatransfer.DataFlavor; 
import java.awt.datatransfer.Transferable; 
import java.awt.datatransfer.UnsupportedFlavorException; 
import java.awt.event.KeyEvent; 
import java.awt.image.RenderedImage; 
import java.io.File; 
import java.io.IOException; 

import javax.imageio.ImageIO; 

    public class AltPrintScreen { 

     public static void main(String[] args) throws IOException, UnsupportedFlavorException, AWTException { 

      Robot robot = new Robot(); 

      robot.keyPress(KeyEvent.VK_ALT); 
      robot.keyPress(KeyEvent.VK_PRINTSCREEN); 
      robot.keyRelease(KeyEvent.VK_PRINTSCREEN); 
      robot.keyRelease(KeyEvent.VK_ALT); 

      try { 
       Thread.sleep(1000 * 2); 
      } catch (InterruptedException e) { 
       throw new RuntimeException(e); 
      } 

      Transferable t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null); 
      RenderedImage image = (RenderedImage)t.getTransferData(DataFlavor.imageFlavor); 

      boolean isSuccess = ImageIO.write(image, "png", new File("altScreen.png")); 

      System.out.println(isSuccess); 
     } 
    }