一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java實現屏幕截圖及剪裁

Java實現屏幕截圖及剪裁

2019-11-28 14:21hebedich JAVA教程

這是一篇入門級文章,高手請略過。在這篇文章中我們將學習如何用 Java 對圖像進行剪裁并將剪裁出來的部分單獨保存到文件中。

Java標準API中有個Robot類,該類可以實現屏幕截圖,模擬鼠標鍵盤操作這些功能。這里只展示其屏幕截圖。

  截圖的關鍵方法createScreenCapture(Rectangle rect) ,該方法需要一個Rectangle對象,Rectangle就是定義屏幕的一塊矩形區域,構造Rectangle也相當容易:

new Rectangle(int x, int y, int width, int height),四個參數分別是矩形左上角x坐標,矩形左上角y坐標,矩形寬度,矩形高度。截圖方法返回BufferedImage對象,示例代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
 * 指定屏幕區域截圖,返回截圖的BufferedImage對象
 * @param x
 * @param y
 * @param width
 * @param height
 * @return
 */
 public BufferedImage getScreenShot(int x, int y, int width, int height) {
  BufferedImage bfImage = null;
  try {
    Robot robot = new Robot();
    bfImage = robot.createScreenCapture(new Rectangle(x, y, width, height));
  } catch (AWTException e) {
    e.printStackTrace();
  }
  return bfImage;
}

 如果需要把截圖保持為文件,使用ImageIO.write(RenderedImage im, String formatName, File output) ,示例代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/**
 * 指定屏幕區域截圖,保存到指定目錄
 * @param x
 * @param y
 * @param width
 * @param height
 * @param savePath - 文件保存路徑
 * @param fileName - 文件保存名稱
 * @param format - 文件格式
 */
public void screenShotAsFile(int x, int y, int width, int height, String savePath, String fileName, String format) {
  try {
    Robot robot = new Robot();
    BufferedImage bfImage = robot.createScreenCapture(new Rectangle(x, y, width, height));
    File path = new File(savePath);
    File file = new File(path, fileName+ "." + format);
    ImageIO.write(bfImage, format, file);
  } catch (AWTException e) {
    e.printStackTrace(); 
  } catch (IOException e) {
    e.printStackTrace();
  }
}

 捕捉屏幕截圖后,也許,我們需要對其剪裁。主要涉及兩個類CropImageFilter和FilteredImageSource,關于這兩個類的介紹,看java文檔把。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
 * BufferedImage圖片剪裁
 * @param srcBfImg - 被剪裁的BufferedImage
 * @param x - 左上角剪裁點X坐標
 * @param y - 左上角剪裁點Y坐標
 * @param width - 剪裁出的圖片的寬度
 * @param height - 剪裁出的圖片的高度
 * @return 剪裁得到的BufferedImage
 */
public BufferedImage cutBufferedImage(BufferedImage srcBfImg, int x, int y, int width, int height) {
  BufferedImage cutedImage = null;
  CropImageFilter cropFilter = new CropImageFilter(x, y, width, height);
  Image img = Toolkit.getDefaultToolkit().createImage(new FilteredImageSource(srcBfImg.getSource(), cropFilter));
  cutedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
  Graphics g = cutedImage.getGraphics();
  g.drawImage(img, 0, 0, null);
  g.dispose();
  return cutedImage;
}

如果剪裁后需要保存剪裁得到的文件,使用ImageIO.write,參考上面把截圖保持為文件的代碼。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 美女黄金大片视频免费看 | 日本视频免费看 | 国产亚洲精品一区二区在线播放 | 4hu永久地域网名入口 | 精品久久免费视频 | 亚洲精品私拍国产福利在线 | 1377大但人文艺术包子铺 | 99资源站| 91制片厂制作果冻传媒123 | 国产精品高清一区二区三区不卡 | 亚洲高清在线天堂精品 | 91在线永久| 80日本xxxxxxxxx96 7个黑人玩北条麻妃 | 麻豆网页| 四虎永久免费地址在线观看 | 精品国产自在天天线2019 | 欧美一区二区三区免费高 | 国产国语在线播放视频 | 国产日韩高清一区二区三区 | 91噜噜噜在线观看 | 午夜一个人在线观看完整版 | 四虎2021地址入口 | 日产精品一卡2卡三卡4乱码久久 | 亚洲国产精品一区二区首页 | 久久99视热频国只有精品 | 亚洲sss综合天堂久久久 | 日本黄大片影院一区二区 | 国产精品日本一区二区三区在线看 | 免费视频完整版在线观看网站 | 国产裸露片段精华合集链接 | 天天操天天射天天爽 | 男人狂躁女人下面狂叫图片 | 亚洲a视频在线观看 | 91正在 播放 | 好大好深好涨好烫还要 | 91你懂的| 欧美久久综合网 | 北岛玲亚洲一区在线观看 | 久久婷婷五月综合色丁香花 | 国产成人盗摄精品 | 糖心hd在线观看 |