public final class DisplayCapture
extends java.lang.Object
implements java.awt.datatransfer.FlavorListener
DisplayCapture.java は、画面イメージをキャプチャして、ファイルに書き出すためのクラスです。
基本的な使い方は、main メソッドから立ち上げて、クリップボードの状態を監視します。
クリップボードに、"GUI:画面ID xxxxx.jsp" 形式の文字が書き込まれると、flavorsChanged イベントが
発生して、画面を、ファイルに書き出す処理が実行されます。
エンジンの機能と連動すれば、画面IDやファイル名をクリップボード経由でこのアプリケーションに
渡すことで、画面操作を行うだけで、自動的に画面キャプチャを行うことが可能です。
エンジンでは、jsp/indexc.jsp に、この機能が組み込まれているため、gf\BAT\displayCapture の
DisplayCapture.bat を起動後、アプリケーションを、jsp/indexc.jsp で呼び出せば、自動的に
画面のキャプチャを開始できます。
キャプチャは、全画面のみですので、IEを最大に広げて操作してください。
また、「Prnt Scrn」ボタンにも対応していますので、操作中やポップアップ等の非自動化の
画面キャプチャも、手動で取得できます。
起動時の引数に応じて、処理を制御することが可能です。
書き出すフォルダは、BASE_DIR で指定します。
すべてのキャプチャ画像は、ベースフォルダ に集約して保存します。
キャプチャ画像の情報は、出力されるファイル名に反映されます。ファイル名の形式も2種類あり、
キャプチャ順と、画面ID順が指定できます。
初期値は、Java起動時のフォルダになります。
書き出すファイル名の初期形式は、firstID の設定により異なります。
firstID を gui に設定した場合
ベースフォルダでフォルダを作成し、その中に、画面ID_JSPファイル名_連番.画像形式 ファイルを作成します。
画面ID 単位に、画面のキャプチャを整理、使用したい場合に便利です。
ファイルのタイムスタンプ(作成時刻)で並び替えを行えば、キャプチャ順に並び替えできます。
firstID を seq に設定した場合
ベースフォルダでフォルダを作成し、その中に、連番_画面ID_JSPファイル名.画像形式 ファイルを作成します。
ファイルは、キャプチャされた順番に、画面IDも混在して作成されます。つまり、ファイル名の順番に
再生すれば、リンクや他のシステムとの連携などで、画面が行き来しても、作業の順番にキャプチャできて
いる事になります。
このクラスは、これらを実現するために利用している、static メソッドをいくつか持っています。
BufferedImage doCapture()
画面イメージをキャプチャします。これは、全画面です。
void saveImage( File saveFile, BufferedImage img, String imgType )
指定のファイルに、画面イメージを書き出します。
imgType に、画像の種類(png|gif|jpg)を指定します(初期値:png)。
String getClipboard()
現在のクリップボードの値を取り出します。ここでは、文字列のみ取り出すことが可能です。
このメソッドの特徴的なところは、PrintScreenなどの文字列以外の値をクリップボードにセット
した場合に、"GUI:PRINT SCREEN.img" という文字列を返すところです。つまり、その場合は、
全画面のキャプチャが行われるという事です。
void setClipboard( String txt )
クリップボードに、文字列をセットします。
このクラスが実装している FlavorListener は、クリップボードの"値"の更新には追従していません。
内部の Transferable オブジェクトが変更された場合に、flavorsChanged メソッドが呼び出されます。
つまり、一度セットされた文字型データは、取り出した後、別のTransferable オブジェクトに変更して
おかないと、次の文字列の変更が拾えなくなります。また、この別のTransferableオブジェクトの
設定で、再び、イベントが発生するので、そのままでは、無限ループになってしまいます。
そこで、少し、トリッキーなのですが、setClipboard( String ) すると、再びイベントが呼び出され
ないように、取得した文字列の先頭が、"GUI:" で始まる場合のみ、再設定するようにしています。
Usage: java org.opengion.fukurou.util.DisplayCapture
[BASE_DIR] [firstID(seq|gui)] [imageFormat(png|gif|jpg)] [startCnt(100)]
args[0] BASE_DIR : キャプチャファイルをセーブするベースとなるディレクトリ(初期値:起動フォルダ)
args[1] firstID : キャプチャ画像をセーブするファイル方式を指定します(初期値:seq)
gui (画面ID_JSPファイル名_連番.画像形式)
seq (連番_画面ID_JSPファイル名.画像形式)
args[2] imageFormat : 作成するイメージの形式。png|gif|jpg のどれか(初期値:png)
args[3] startCnt : セーブファイル名をユニークにするためのカウント(初期値:100)
この実装は同期化されません。| 5.1.7.0 (2010/06/01) 新規追加 |
| 5.2.1.0 (2010/10/01) 実用性を重視した改修 |
| コンストラクタと説明 |
|---|
DisplayCapture() |
| 修飾子とタイプ | メソッドと説明 |
|---|---|
static java.awt.image.BufferedImage |
doCapture()
全画面の画像イメージ(キャプチャ画像)を取得します。
|
void |
flavorsChanged(java.awt.datatransfer.FlavorEvent fe)
リスナー対象の Clipboard で使用可能な DataFlavor が変更されたときに呼び出されます。
|
static java.lang.String |
getClipboard()
システムのクリップボードの文字列を取得します。
|
static void |
main(java.lang.String[] args)
DisplayCapture.java は、画面イメージをキャプチャする、メインメソッドです。
|
static void |
saveImage(java.awt.image.BufferedImage img,
java.lang.String imgType,
java.io.File saveFile)
キャプチャ画像をファイルにセーブします。
|
void |
setBaseDir(java.lang.String bsDir)
キャプチャファイルをセーブするベースとなるディレクトリを設定します(初期値:java実行フォルダ)。
|
static void |
setClipboard(java.lang.String txt)
システムのクリップボードに文字列を書き込みます。
|
void |
setFirstID(java.lang.String firstID)
キャプチャ画像をセーブするファイル方式を指定します(初期値:seq)。
|
void |
setImageType(java.lang.String imgType)
キャプチャ画像をセーブする画像形式を指定します(初期値:png)。
|
void |
setStartCnt(java.lang.String startCnt)
キャプチャ画像をセーブするファイル名の先頭に付ける連番の開始数(初期値:100)。
|
public void setBaseDir(java.lang.String bsDir)
bsDir - セーブするベースディレクトリjava.lang.RuntimeException - セーブフォルダが作成できなかった場合public void setFirstID(java.lang.String firstID)
firstID - セーブするファイル方式(seq|gui)java.lang.RuntimeException - ファイル方式の指定が間違っていた場合public void setImageType(java.lang.String imgType)
imgType - セーブする画像形式(png|gif|jpg)public void setStartCnt(java.lang.String startCnt)
startCnt - 連番の開始数(初期値:100)public static java.awt.image.BufferedImage doCapture()
java.lang.RuntimeException - AWTException が発生した場合public static void saveImage(java.awt.image.BufferedImage img,
java.lang.String imgType,
java.io.File saveFile)
img - セーブする画像イメージimgType - セーブする画像形式(png|gif|jpg)saveFile - セーブする画像ファイルオブジェクトjava.lang.RuntimeException - IOException が発生した場合ImageIO.write( java.awt.image.RenderedImage , String , java.io.File )public static java.lang.String getClipboard()
java.lang.RuntimeException - IOException が発生した場合Clipboard.getData( DataFlavor )public static void setClipboard(java.lang.String txt)
txt - クリップボードに書き込む文字列StringSelection,
Clipboard.setContents( Transferable , ClipboardOwner )public void flavorsChanged(java.awt.datatransfer.FlavorEvent fe)
flavorsChanged インタフェース内 java.awt.datatransfer.FlavorListenerfe - イベントソースFlavorListener.flavorsChanged( FlavorEvent )public static void main(java.lang.String[] args)
args - 引数 [BASE_DIR] [firstID(seq|gui)] [imageFormat(png|gif|jpg)] [startCnt(100)]Webアプリケーションフレームワーク openGionCopyright (c) 2009 The openGion Project.