Pillanatképek készítése Java használatával

1. Bemutatkozás

Ebben az oktatóanyagban áttekintünk néhány képet a képernyőkép készítéséről a Java-ban.

2. Pillanatkép készítése a Robot

Első példánkban képernyőképet készítünk a főképernyőről.

Ehhez a createScreenCapture () módszer a Robot osztály. Ehhez a Téglalap paraméterként, amely meghatározza a képernyőkép határait és visszaadja a BufferedImage tárgy. A BufferedImage tovább használható képfájl létrehozására:

@Test public void givenMainScreen_whenTakeScreenshot_thenSaveToFile () dobja a Kivételt {Rectangle screenRect = new Rectangle (Toolkit.getDefaultToolkit (). GetScreenSize ()); BufferedImage capture = új robot (). CreateScreenCapture (screenRect); File imageFile = új fájl ("single-screen.bmp"); ImageIO.write (rögzítés, "bmp", imageFile); assertTrue (imageFile .exists ()); }

A képernyő méretei a Eszköztár osztály használatával getScreenSize () módszer. Több képernyős rendszereken az elsődleges megjelenítést alapértelmezés szerint használják.

Miután elfogta a képernyőt BufferedImage, -val írhatjuk a fájlba ImageIO.write (). Ehhez két további paraméterre lesz szükségünk. A képformátum és maga a képfájl. Példánkban használjuk a.bmp formátumban, de mások szeretik.png, .jpg vagy .gif is rendelkezésre állnak.

3. Pillanatkép készítése több képernyőről

Az is lehetséges, hogy egyszerre több képernyőről készítsen képernyőképet. Az előző példához hasonlóan használhatjuk a createScreenCapture () módszer a Robot osztály. De ezúttal a képernyőkép határainak le kell fedniük az összes szükséges képernyőt.

Az összes megjelenítéshez használjuk a GraphicsEnvironment osztály és annak getScreenDevices () módszer.

Ezután lekérjük az egyes képernyők kötését és létrehozunk egy Téglalap ami mindnyájuknak megfelel:

@Test public void givenMultipleScreens_whenTakeScreenshot_thenSaveToFile () dobja a Kivételt {GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment (); GraphicsDevice [] képernyők = ge.getScreenDevices (); Téglalap allScreenBounds = új téglalap (); a (GraphicsDevice képernyőn: képernyők) {Téglalap képernyőBounds = screen.getDefaultConfiguration (). getBounds (); allScreenBounds.width + = screenBounds.width; allScreenBounds.height = Math.max (allScreenBounds.height, screenBounds.height); } BufferedImage capture = új robot (). CreateScreenCapture (allScreenBounds); File imageFile = új fájl ("all-screens.bmp"); ImageIO.write (rögzítés, "bmp", imageFile); assertTrue (imageFile.exists ()); }

Míg a kijelzőn végigjátszjuk, mindig összegezzük a szélességeket, és csak egy maximális magasságot választunk, mivel a képernyők vízszintesen összefűznek.

Továbbhaladva el kell mentenünk a képernyőképet. Az előző példához hasonlóan használhatjuk a ImageIO.write () módszer.

4. Pillanatkép készítése egy adott GUI-komponensről

Képernyőképet is készíthetünk egy adott felhasználói felületről.

A méretek a getBounds () módszer, mivel minden alkatrész tisztában van a méretével és helyével.

Ebben az esetben nem fogjuk használni a Robot API. Ehelyett a festék() módszer a Összetevő osztály, amely a tartalmat közvetlenül a BufferedImage:

@Test public void givenComponent_whenTakeScreenshot_thenSaveToFile (Component component) dobja a Kivételt {Rectangle componentRect = component.getBounds (); BufferedImage bufferedImage = új BufferedImage (componentRect.width, componentRect.height, BufferedImage.TYPE_INT_ARGB); component.paint (bufferedImage.getGraphics ()); File imageFile = új fájl ("component-screenshot.bmp"); ImageIO.write (bufferedImage, "bmp", imageFile); assertTrue (imageFile.exists ()); }

Miután megkaptuk az összetevő kötését, létre kell hoznunk a BufferedImage. Ehhez szükségünk van a szélességre, a magasságra és a kép típusára. Ebben az esetben használjuk BufferedImage.TYPE_INT_ARGB amely egy 8 bites színes képre utal.

Ezután továbblépünk a festék() módszer a BufferedImage és ugyanúgy, mint az előző példákban, fájlba mentjük ImageIO.write () módszer.

5. Következtetés

Ebben az oktatóanyagban számos módszert tanultunk meg arról, hogyan készíthet képernyőképeket a Java használatával.

Mint mindig, a forráskód és az oktatóanyag összes példája elérhető a GitHubon.


$config[zx-auto] not found$config[zx-overlay] not found