一部画面のみのキャプチャを取得したい

invoke methodアクティビティを使って、
画面キャプチャを取得し画像ファイルとして保存したり、
取得したキャプチャをprtscに送ってExcelに ctrl+v で貼り付けたり、ということをやっているのですが、
一部画面のみのキャプチャを取得したい場合、何かいい方法はありますでしょうか?

例えば…下記画面の赤枠のみのキャプチャを取得したい

ウィンドウを指定してキャプチャを取ることはできても、
その画面の一部分のみを取得する作業をUiPathの中で実装するのは無理だと考えてはいるのですが、
もし何かヒント等、思いつく点がございましたらご助力いただけますと幸いです。

@saltyayumu

take screenshot activityで、セレクタ指定でキャプチャが取れますが試しましたか?
これでとった画像をsave image activity すれば、セレクタが取れる場所なら、分割してキャプチャが取れます。

1 Like

@saltyayumu さん

@Jumbo さんの方法で一番いいですが、
万が一セレクタが取れない場合、下記のアクティビティを利用して、
取得して画像を調整することができます。

Jumbo様

回答ありがとうございます!
すみません説明が悪かったです…。
Take Screen shot だと取りたい画面までは指定できるのですが、
画面の一部をトリミングをしたような形にできないものかと考えております。

例えば上記のような感じで、赤枠内のみ、Jumbo様の名前が見えないようなキャプチャを取りたい、
といった場合、どのようにすべきかを考えていました。
プロパティの中に「クリッピング領域(Region)」があったので、
上の値に-100といった値を入れればいいかと思いましたが、
下記のようなエラーが出てしまうので、いい感じのやり方が思いついていませんでした。

今考えているのはツールを使ってマウスをドラッグして、
範囲キャプチャ取得したものを使おうとは考えていますが、
画面の大きさや端末によって変わってきそうなので避けたいと思っています…。

wusiyangjia様

回答ありがとうございます。
今回は諸事情でで2018.4.3のバージョンまでのアクティビティしか使えないのですが、
今後、このアクティビティを使った場合の方法等を検討したいと思います!

横から失礼します。

@Jumbo さんのご回答から「Selectorを指定してキャプチャを取ることができる」ということを学べました。
ありがとうございました。
参考になるかわかりませんが作成したxamlを置いておきます。
Sequence.xaml (7.1 KB)

こんにちは

UiPath.Core,ImageクラスにはCropImageメソッドがあるので
TakeScreenShotで出力した画像をimgとすると、assignアクティビティで

img = img.CropImage(new uipath.Core.Region(new Rectangle(0,0,100,100)))

のような感じでクロップできますよ。

クリッピング領域でもできそうですが、変数使えなったりして使い勝手悪いので、こちらはあまり使っていません。

2 Likes

色々試した結果、下記方法でスクリーンショットの上50ピクセル分を切り取ったスクリーンショットをとることができました。
Sequence.xaml (7.2 KB)
「クリッピング領域(Region)」は、(0, 50, 600, 250)としました。

※「クリッピング領域(Region)」を(0, 50, 0, 0)などにしてしまうと、左右のピクセルが0起点となるので、幅0ピクセルのイメージを取ることになり、それでエラーになってしまうようです。

1 Like