パッケージ 1。
インポートjava.awt.AWTException;
java.awt.Dimensionをインポートします。
java.awt.MouseInfoをインポートします。
java.awt.Rectangle をインポートします。
java.awt.Robotをインポートします。
java.awt.Toolkitをインポートします。
インポート java.awt.image.BufferedImage;
java.io.ファイルをインポートします。
インポート java.io.IOException;
インポートjavax.imageio.ImageIO;
org.sikuli.script.Region をインポートします。
org.sikuli.script.Screen をインポートします。
org.sikuli.script.ScreenImage をインポートします。
public class GetScreen { public static void main(String[] args) throws Exception { //screenClipUser(); takePictureOfError("画像"); }
public static void takePictureOfError(String Name) throws IOException, AWTException { // ページ全体を直接クロールします。Toolkit をサポートするためにサードパーティのパッケージは必要ありません toolkit = Toolkit.getDefaultToolkit(); Dimension screenSize = toolkit.getScreenSize(); Rectangle screenRect = new Rectangle (screenSize); Robot robot = new Robot(); BufferedImage image = robot.createScreenCapture(screenRect); ImageIO.write(image, "png", new File("D:\\SikuliImages\\PrintScreen11.png" )); }
public static void screenClipUser() throws IOException{ //このスクリーンショット メソッドでは、マウスで領域を選択する必要があります Screen screen = Screen.getPrimaryScreen();
リージョン領域 = screen.selectRegion("画像としてキャプチャする領域を選択");
ScreenImage クリップ = area.getLastScreenImage(); // screen.userCapture();
ScreenImage printScreen = area.getScreen().capture();
//キャプチャマウスで選択した領域を取得
ImageIO.write(clip.getImage(), "PNG", new File("D:\\SikuliImages\\Clip.png"));
//デスクトップ全体をキャプチャ
ImageIO.write(printScreen .getImage (), "PNG", new File("D:\\SikuliImages\\PrintScreen.png"));
//screenCaptureRegion(screen);
public static void screenCaptureRegion(Screen screen) throws IOException{ java.awt.Point point = MouseInfo.getPointerInfo(). getLocation (); System.out.println("マウスの位置が前に選択されたものと一致します: " + ポイント); //ScreenImagecaptureRegion = screen.capture(point.x, point.y, 200, 200); //ScreenImagecaptureRegion = screen.capture(clip.x,clip.y,clip.w,clip.h); //ImageIO.write(capturedRegion.getImage(), "PNG", new File("D:\\SikuliImages\\CapturedRegion.png")); } }
Java のロボットのようなスクリーンショットと画像のトリミングを使用します。
Java 標準 API には Robot クラスがあり、スクリーンショットを実現したり、マウスやキーボードの操作をシミュレートしたりできます。ここではスクリーンショットのみを示します。
スクリーンショットの主なメソッドは createScreenCapture(Rectangle rect) で、これには Rectangle オブジェクトが必要です。Rectangle は画面を定義する長方形の領域です。Rectangle を構築するのも非常に簡単です: new Rectangle(int x, int y, int width,
int height), four パラメータは、長方形の左上隅の x 座標、長方形の左上隅の y 座標、長方形の幅、および長方形の高さです。スクリーンショット メソッドは BufferedImage オブジェクトを返します。サンプル コードは次のとおりです。
/**
* 指定された画面領域のスクリーンショットを取得し、スクリーンショットの 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(); } bfImage を返します; }
スクリーンショットをファイルとして保存する必要がある場合は、ImageIO.write(RenderedImage im, String formatName, File Output) のサンプル コードを使用します。
/**
* 指定された画面領域のスクリーンショットを取得し、指定されたディレクトリに保存します
* @param x
* @param y
* @param width
* @param height
* @param savePath - ファイルの保存パス
* @param fileName - ファイルの保存name
* @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)); ファイルパス = new File(savePath); ファイル file = new File(path, fileName+ "." + format);
ImageIO.write(bfImage, フォーマット, ファイル);
} catch (AWTException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
スクリーンショットをキャプチャした後、おそらくそれをトリミングする必要があります。これには主に CropImageFilter と FilteredImageSource という 2 つのクラスが含まれます。これら 2 つのクラスの概要については、Java ドキュメントを参照してください。
/**
* 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); 画像 img = Toolkit.getDefaultToolkit().createImage(new FilteredImageSource(srcBfImg.getSource(), CropFilter));
cutedImage = 新しい BufferedImage(幅, 高さ, BufferedImage.TYPE_INT_RGB);
グラフィックス g = CutedImage.getGraphics();
g.drawImage(img, 0, 0, null);
g.dispose();
かわいい画像を返します。
}