忍者ブログ

孤島の奇譚

思いつきで始めるブログ。漫画や音楽、アニメ、小説などの感想や、突飛な思いつきなどを書く。プログラミングが趣味だから、そういう話もしたいところ。一度失敗したのに懲りないのはいつものことだ。移動しました→http://isolated-hyakunin-isshu.blogspot.jp/

Javaでスクリーンキャプチャ

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

Javaでスクリーンキャプチャ

Javaでスクリーンショットを撮る

 ディスプレイに表示されている画面を画像データ化したいとき、つまりはスクリーンショットを撮りたいときがある。WindowsではPrintScreenキーを押すとクリップボードにスクリーンショットを保存できる。画像編集ソフトウェアのGIMPには高度なスクリーンキャプチャの機能がある。 そして、Javaにもスクリーンショットのための機能がある。

 Javaには標準でjava.awt.Robotというクラスが存在する。このクラスは仕様書によると「Java プラットフォーム実装テストを自動化する」ために存在するらしく、自動的にキーボードのキーを押したりカーソルを移動させたりする機能がある。 当記事で紹介するのはこのクラスのcreateScreenCaptureメソッドである。

 このcreateScreenCaptureメソッドがスクリーンキャプチャの働きをするメソッドである。 引数はjava.awt.Rectangleのインスタンスであり、これで撮影する範囲をXY座標、幅、高さで指定する。 返り値はjava.awt.image.BufferedImageのインスタンスであり、このインスタンスは画像データを示す。こうして得られた画像をそのままファイルとして保存したり何かしらに表示したりすることができる。

連続スクリーンキャプチャ

 このスクリーンキャプチャの機能を利用するために私が実際に作成したプログラムの一部を次に示す。このプログラムは指定した回数countだけ撮影するというもので、指定したミリ秒delayの分だけ撮影毎に間隔をあける。そして、撮影したスクリーンショットのハードコピーをディレクトリdirに適当な名前をつけて保存する。 Robotにはスレッドスリープの機能をするdelayメソッドもあるためそれも利用した。 画像の保存ではjavax.imageio.ImageIOクラスを用いた。

//Robotを取得
Robot robot=null;
try{
	robot=new Robot();
}catch(AWTException e){
	e.printStackTrace();
}

for(int i=0;i<count;i++){
	/*遅延*/if(i!=0)robot.delay(delay);
	//ハードコピーを取得
	BufferedImage image=robot.createScreenCapture(rectangle);
	try {
		//画像を出力 (形式はPNG)
		ImageIO.write(image,"PNG",new File(dir,"screenshot"+(i+1)+".png"));
	}catch(IOException e){
		e.printStackTrace();
	}
}

 なお、RobotにはgetPixelColorというメソッドもある。このメソッドは指定した座標のピクセルの色を取得するというものである。 このように、Robotには少し変わった機能があり、工夫次第で面白い使い方もできるかもしれない。



拍手[0回]

PR

コメント

PR

伝説のロック(?)バンド「たま」の楽曲を聞くならばとりあえずこの1枚を。

筋肉少女帯入門に最適のベスト盤。

筋肉少女帯の最高傑作。「狂気」をテーマにした楽曲を集めたアルバム。「蜘蛛の糸」と「ハッピーアイスクリーム」が特に好き。

谷山浩子入門に最適のベスト盤。暖かく優しい白の楽曲と、奇妙な味の黒の楽曲の両方を楽しめる。

天才研究者の姉が貝殻人間になった理由とは。衝撃的な表題作を筆頭に、きょうだいたちの物語が収められた短編集。

遠い未来、人間は宝石となった。弱く脆い主人公・フォスフォフィライトの変化の物語。

大槻ケンヂ氏の短編小説集。悩める中学生・高校生におすすめしたい。