スクリーンショットのサイズ変更で画質が粗くなる

こちらの中身見させていただきました!
とてもすごいです。

内容についてご教示いただきたいのですが、

worksheet.AddPicture(ms,XLPictureFormat.Png,"SS").MoveTo(worksheet.Cell("B2")).WithSize(bmp.Width>>1, bmp.Height>>1)

AddPictureの引数の、SSというのは何を指していますでしょうか?
また、元のサイズに関わらず、*WithSize(bmp.Width>>1, bmp.Height>>1)*と記述すればよろしいのでしょうか?

こんにちは

AddPictureの引数の、SSというのは何を指していますでしょうか?

Shapeの名称なので任意の文字列で結構かと思います。

また、元のサイズに関わらず、*WithSize(bmp.Width>>1, bmp.Height>>1)*と記述すればよろしいのでしょうか?

50%にするなら上記でOKですが、それ以外の比率の場合は適切な計算式を入れてください。

ありがとうございます。
初歩的な質問となりお恥ずかしい限りですが、「>>1」=0.5ということでしょうか?
0.8掛けくらいのサイズにしたい場合はどのような記述方法になりますでしょうか。

※追記
上記の記述方法で、元の画像サイズより大きくなってしまう画像がありました。(正方形寄りの画像で、1.8倍くらいになりました)

また、

pic=worksheet.AddPicture(ms,XLPictureFormat.Png,"SS").MoveTo(worksheet.Cell("B292")).WithSize(bmp.Width>>1, bmp.Height>>1)

の部分で、下記エラーが出てしまいます。

代入: The picture name 'SS' already exists.

トライキャッチを入れ、ExceptionのほうにworkbookのDispose()を入れて再度実行してみましたが同様のエラーが出てしまいます。
リソースの問題だと思うのですが、解決方法がわかりません。

お手数をおかけしますが、ご教示いただけますと幸いです。

こんにちは

>> は右シフト演算子です。1ビットシフトした値が返ります。1/2になります。

0.8倍にしたければ、小数演算して整数化してください。例:CInt(bmp.Width*0.8)

代入: The picture name 'SS' already exists.

シート上のシェイプ名はユニークである必要がありますので、
ユニークになる様名前をつけてください。

大きくなる事象はよくわかりませんね。原画像のサイズ、貼り付け後の指定サイズがそれぞれ
どのような数字になっているか、演算の結果であれば、一旦数値を直接入れてみる等で
切り分けができるかもしれません。

シェイプ名はフローの中で一度しか使用していませんが、同じシーケンスを2回以上実行するとエラーが起こります。
(本番ではこのロボットを1日に数回、現在はデバッグのため複数回実行したいです。)

整数にすれば良いのですね。ありがとうございます。

検証してみます。

シート内で名前がユニークではないということでしょう。単純に同じシートに対して2回実行すると、当然ながらエラーになります。名前が何でもよければ挿入の度に適当なユニークな名前を付ければ良いかと思います。

UiPath内ではなくシート内でユニークということですね。
シートの画像を削除したところ実行することができました!

元々の課題であった画質が粗くなってしまう点についても、ご教示いただいた方法で改善されました。
この度は、長いことご教示いただき誠にありがとうございます。
大変助かりました。

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.