blogソフトウェア開発と人生をやっていきますこの広告は、90日以上更新していないブログに表示しています。プロダクトスクリーンショット自動化ツール「BindScreen」スクリーンショットを自動でとって加工する「BindScreen」を作りました。ツールとソースコードはGitHubからダウンロードすることができます。次のスライドをこのツールで画像化してみたいと思います。(このスライドはGFDL1.3で配布されています)今回の設定は以下のようにしてみました。キャプチャ間隔はスクリーンキャプチャを行う間隔です。キー入力もこの間隔で行われます。初期化時間はプログラムが実行が始まるまでの時間です。設定した時間の間にキャプチャする画面を前面に表示しておきます。今回はブラウザの要素をキャプチャしますが、多くのブラウザではF11を押すと全画面表示になるので活用するといいと思います。今回は画像のトリミングを行わずに圧縮を行いたいので、「画像のトリミングを行う」のチェックを外し、「圧縮フォルダを出力する」にチェックを入れます。見開き方向の選択はトリミングを行わない場合はどちらを選んでも出力結果に影響はありません。このスライドは右キーで次ページに移動するので、"右キー"を選択して出力先フォルダを設定します。設定が完了したら実行をクリックしましょう。スライドが終了すると自動的にスクリーンショットの撮影が止まります。指定したフォルダを確認すると「spread_image」と「spread_complete.zip」が作成されています。試しにspread_imageを開くと以下のような画像が生成されています。他にもソフトの表示結果のログを画像として記録する用途などで使えると思います。画像処理このツールはPythonを使って開発を行いました。Library)のforkであるPillowを使っています。PILは開発が停滞していてPython2.7までしか対応していませんが、Pillowは開発が継続的に行われていてPython3以降に対応しています。画像の分割や余白の除去もPillowで行っています。画面キャプチャは変化が無くなった時点で自動的に終了しますが、これは前後の画像のMD5を計算してメッセージダイジェストが同じであれば終了する仕組みになっています。この方法では数ピクセルでも画像が異なっていれば違う画像として判定されます。画像の僅かな違いを許容したいのであれば、画像のヒストグラムを比較して閾値で判定を行う方法をとると良いかもしれません。キーボード入力キーボード入力はwin32APIであるSendKeysを使ってキーストロークを送信しています。GUIでは上下左右の方向キーのみ対応していますが、CUIでAPIを引数に与えれば任意の入力を行うことが出来ます。MSDNこのツールがWindows専用ツールになったのはSendKeysAPIを使用しているからです。xautomationなどを使えばLinuxやMacに対応することができますが、依存ライブラリが増えてしまうので今回は使用しませんでした。GUIGUIの作成にはPyQt4を使いました。今回初めて使いましたが、さくっとGUIが出来てとても便利でした。PyQtはモジュールが疎結合に作られているので、ボトムアップ的で面白かったです。このツールはもともとCUIとして作成したので、GUIは引数とオプションを決めてスクリプトに渡す設計にしています。このような作り方にするとCUIが独立して使えるので、バッチ処理ができるのでいい感じですね。MD600を購入しました。»プロフィールid:drilldripperプログラミングと将棋が好きです。(1)月別アーカイブはてなブログをはじめよう!drilldripperさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。