最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實(shí)現(xiàn)屏幕截圖及剪裁

 更新時(shí)間:2014年09月14日 09:22:53   投稿:hebedich  
這是一篇入門(mén)級(jí)文章,高手請(qǐng)略過(guò)。在這篇文章中我們將學(xué)習(xí)如何用 Java 對(duì)圖像進(jìn)行剪裁并將剪裁出來(lái)的部分單獨(dú)保存到文件中。

Java標(biāo)準(zhǔn)API中有個(gè)Robot類,該類可以實(shí)現(xiàn)屏幕截圖,模擬鼠標(biāo)鍵盤(pán)操作這些功能。這里只展示其屏幕截圖。

  截圖的關(guān)鍵方法createScreenCapture(Rectangle rect) ,該方法需要一個(gè)Rectangle對(duì)象,Rectangle就是定義屏幕的一塊矩形區(qū)域,構(gòu)造Rectangle也相當(dāng)容易:

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

   /**
   * 指定屏幕區(qū)域截圖,返回截圖的BufferedImage對(duì)象
   * @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) ,示例代碼:

   /**
   * 指定屏幕區(qū)域截圖,保存到指定目錄
   * @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();
    }
  }

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

   /**
   * BufferedImage圖片剪裁
   * @param srcBfImg - 被剪裁的BufferedImage
   * @param x - 左上角剪裁點(diǎn)X坐標(biāo)
   * @param y - 左上角剪裁點(diǎn)Y坐標(biāo)
   * @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,參考上面把截圖保持為文件的代碼。

相關(guān)文章

  • 實(shí)例解析Java設(shè)計(jì)模式編程中的適配器模式使用

    實(shí)例解析Java設(shè)計(jì)模式編程中的適配器模式使用

    適配器模式的主要作用是在新接口和老接口之間進(jìn)行適配,通過(guò)將一個(gè)類的接口轉(zhuǎn)換成客戶期望的另一個(gè)接口,讓原本不兼容的接口可以合作無(wú)間,本文以實(shí)例解析Java設(shè)計(jì)模式編程中的適配器模式使用,需要的朋友可以參考下
    2016-05-05
  • idea將項(xiàng)目上傳到Gitee的圖文過(guò)程

    idea將項(xiàng)目上傳到Gitee的圖文過(guò)程

    這篇文章主要介紹了idea將項(xiàng)目上傳到Gitee上,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • Java訪問(wèn)數(shù)據(jù)庫(kù)實(shí)例詳解

    Java訪問(wèn)數(shù)據(jù)庫(kù)實(shí)例詳解

    這篇文章主要為大家詳細(xì)介紹了Java訪問(wèn)數(shù)據(jù)庫(kù)實(shí)例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • SpringBoot采用AJAX實(shí)現(xiàn)異步發(fā)布帖子詳解

    SpringBoot采用AJAX實(shí)現(xiàn)異步發(fā)布帖子詳解

    Ajax是一種web應(yīng)用技術(shù),可以借助客戶端腳本(javascript)與服務(wù)端應(yīng)用進(jìn)行異步通訊,獲取服務(wù)端數(shù)據(jù)以后,可以進(jìn)行局部刷新,進(jìn)而提高數(shù)據(jù)的響應(yīng)和渲染速度。所有的Ajax請(qǐng)求都會(huì)基于DOM(HTML元素)事件,通過(guò)XHR(XMLHttpRequest)對(duì)象實(shí)現(xiàn)與服務(wù)端異步通訊局部更新
    2022-08-08
  • 基于JWT實(shí)現(xiàn)SSO單點(diǎn)登錄流程圖解

    基于JWT實(shí)現(xiàn)SSO單點(diǎn)登錄流程圖解

    這篇文章主要介紹了基于JWT實(shí)現(xiàn)SSO單點(diǎn)登錄流程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • JAVA代碼塊你了解嗎

    JAVA代碼塊你了解嗎

    這篇文章主要介紹了舉例說(shuō)明Java中的代碼塊,包括靜態(tài)屬性和非靜態(tài)屬性以及構(gòu)造函數(shù)等相關(guān)的執(zhí)行先后,需要的朋友可以參考下
    2021-09-09
  • 淺談Java8 判空新寫(xiě)法

    淺談Java8 判空新寫(xiě)法

    在開(kāi)發(fā)過(guò)程中很多時(shí)候會(huì)遇到判空校驗(yàn),如果不做判空校驗(yàn)則會(huì)產(chǎn)生NullPointerException異常,本文就來(lái)介紹一下Java8 判空新寫(xiě)法,感興趣的可以了解一下
    2021-09-09
  • 常用校驗(yàn)注解之@NotNull,@NotBlank,@NotEmpty的區(qū)別及說(shuō)明

    常用校驗(yàn)注解之@NotNull,@NotBlank,@NotEmpty的區(qū)別及說(shuō)明

    這篇文章主要介紹了常用校驗(yàn)注解之@NotNull,@NotBlank,@NotEmpty的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • java 中設(shè)計(jì)模式(裝飾設(shè)計(jì)模式)的實(shí)例詳解

    java 中設(shè)計(jì)模式(裝飾設(shè)計(jì)模式)的實(shí)例詳解

    這篇文章主要介紹了java 中設(shè)計(jì)模式(裝飾設(shè)計(jì)模式)的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • Spring中基于Java的配置@Configuration和@Bean用法詳解

    Spring中基于Java的配置@Configuration和@Bean用法詳解

    這篇文章主要介紹了Spring中基于Java的配置@Configuration和@Bean用法詳解,Spring中為了減少xml中配置,可以聲明一個(gè)配置類(例如SpringConfig)來(lái)對(duì)bean進(jìn)行配置。,需要的朋友可以參考下
    2019-06-06

最新評(píng)論

海伦市| 新蔡县| 遵义市| 东方市| 婺源县| 武定县| 新津县| 汕头市| 衡阳市| 商丘市| 资溪县| 咸宁市| 牟定县| 保靖县| 海南省| 景洪市| 昌吉市| 满城县| 图木舒克市| 清河县| 库尔勒市| 武清区| 纳雍县| 商河县| 三明市| 武乡县| 花莲县| 陆良县| 宿州市| 哈巴河县| 永兴县| 清苑县| 永福县| 屯留县| 天柱县| 阳原县| 喜德县| 望奎县| 从化市| 伊宁县| 故城县|