Upgrade to Pro — share decks privately, control downloads, hide ads and more …

191112 仕様から、試用して、使用する! はなっちさん

RPACommunity
November 12, 2019

191112 仕様から、試用して、使用する! はなっちさん

RPACommunity

November 12, 2019
Tweet

More Decks by RPACommunity

Other Decks in Technology

Transcript

  1. 自己紹介 • 小﨑 肇(こざき はじめ⇒[ハナ]肇⇒はなっち!) • 59歳 昨日... もうすぐ… •

    東京都豊島区⇒神奈川県川崎市中原区 • 趣味 自転車だったけど、最近はINGRESS • 職歴 ➢ かなり前に今の会社に入社。 COBOL⇒JAVA⇒EXCEL-VBA ➢ EXCEL-VBAでは、JP1-REPORTERとか、 SAGENT-REPORTERとか… ➢ UiPath歴は、19ヶ月… ➢ Uipath Japan MVP 2019 認定! Presented By [email protected]
  2. 画像の一部の領域を切り抜くには? 引用元: https://www.atmarkit.co.jp/fdotnet/dotnettips/912bitmapcroprect/bitmapcroprect.html Module Module1 Sub Main() ' 画像を読み込む Dim

    baseFilePath As String = "C:¥bitmapBase.gif" Dim bmpBase As New Bitmap(baseFilePath) ' 画像を切り抜く Dim rect As New Rectangle(20, 90, 450, 100) Dim bmpNew As Bitmap = bmpBase.Clone(rect, bmpBase.PixelFormat) ' 画像をGIF形式で保存 Dim newFilePath As String = "C:¥ bitmapNew.gif" bmpNew.Save(newFilePath, ImageFormat.Gif) ' 画像リソースを解放 bmpBase.Dispose() bmpNew.Dispose() End Sub End Module 画像の切り抜きにはいくつかの方法があるが、Bitmapオ ブジェクトのCloneメソッドを使うと少ない手順で可能だ。 Cloneメソッドの第1パラメータにはRectangle構造体 (System.Drawing名前空間)のオブジェクトを、第2パ ラメータにはPixelFormat列挙体 (System.Drawing.Imaging名前空間)の値を指定する。 引用元: https://www.atmarkit.co.jp/fdotnet/dotnettips/912bitmapcroprect/bitmapcroprect.html
  3. 画像の一部の領域を切り抜くには? 引用元: https://www.atmarkit.co.jp/fdotnet/dotnettips/912bitmapcroprect/bitmapcroprect.html Module Module1 Sub Main() ' 画像を読み込む Dim

    baseFilePath As String = "C:¥bitmapBase.gif" Dim bmpBase As New Bitmap(baseFilePath) ' 画像を切り抜く Dim rect As New Rectangle(20, 90, 450, 100) Dim bmpNew As Bitmap = bmpBase.Clone(rect, bmpBase.PixelFormat) ' 画像をGIF形式で保存 Dim newFilePath As String = "C:¥ bitmapNew.gif" bmpNew.Save(newFilePath, ImageFormat.Gif) ' 画像リソースを解放 bmpBase.Dispose() bmpNew.Dispose() End Sub End Module 代入アクティビティ コードを呼び出し アクティビティ 左辺を指定出来る 左辺がない!
  4. Dim baseFilePath As String = "C:¥bitmapBase.gif" Dim bmpBase As New

    Bitmap(baseFilePath) Dim rect As New Rectangle(20, 90, 450, 100) Dim bmpNew As Bitmap = bmpBase.Clone(rect, bmpBase.PixelFormat) 代入アクティビティ
  5. ? UiPath Forumで質問をしてみる InvokeMethodアクティビティの使い方、設定について こんにちは InvokeMethodアクティビティのMethod名は大文字小文字が 区別されます。 そのためMethod名は“Save“とする必要があります。 InvokeMethodアクティビティは、復帰値を持たないメソッドを呼ぶ際 に使うと思っています。

    今、System.Drawing.Bitmap(元画像ファイル名)で読み込んだBMPファ イルを、bmp.Save(FileName, Format)と、InvokeCodeアクティビティ では保存できるようになったのですが、InvokeMethodアクティビティ で出来ないかと思っていて試行錯誤しています。 云々
  6. 可変要素の問題点は? ➢入力ファイル名 ➢矩形情報  左(Left)  上(Top)  幅(Width) 

    高さ(Height) ➢出力ファイル名 ➢出力形式(BMP,JPG,PNG) ・画像ファイルが存在しなかった。 ⇒確実に存在する仕様とする。異常終了させる ⇒でも存在しなかったら、 どのように結果を返すか? ・ファイルは実在するが、画像ファイルでなかった。 ⇒ファイル拡張子を評価する。 ⇒対象外ファイルだったら、 どのように結果を返すか?
  7. 可変要素の問題点は? ➢入力ファイル名 ➢矩形情報  左(Left)  上(Top)  幅(Width) 

    高さ(Height) ➢出力ファイル名 ➢出力形式(BMP,JPG,PNG) ・左、上が矩形左上座標より小さい ⇒矩形左上座標に合わせる ・左、上が矩形右下座標より大きい ⇒矩形左上座標に合わせる?? ・幅、高さが矩形幅、高さピクセルより大きい ⇒矩形幅、高さピクセルに合わせる
  8. 矩形情報 Dim rect As New Rectangle(Left, Top, Wigth, Height) 0

    Width Leftの決定 … Leftは、0以上であり、Width未満である CorrectedLeft = Math.Min(Math.Max(LowerLimit,Left),UpperLimit) LowerLimit = 0 UpperLimit = ImageWidth ー 1 例えば幅が100で、指定したLeftが -1だったら、 Math.Max(0, -1)=0となり、 Math.Min(0, 99)=0となる。 10だったら、 Math.Max(0, 10)=10となり、 Math.Min(10, 99)=10となる。 99だったら、 Math.Max(0, 99)= 99となり、 Math.Min(99, 99)=100となる。 120だったら、 Math.Max(0, 120)=120となり、 Math.Min(120, 99)=100となる。
  9. 可変要素の問題点は? ➢入力ファイル名 ➢矩形情報  左(Left)  上(Top)  幅(Width) 

    高さ(Height) ➢出力ファイル名 ➢出力形式(BMP,JPG,PNG) ・ファイルの形式ではない ⇒指定者の責任とする? ・入力ファイル名と同じファイル名 ⇒オリジナル画像を壊すのは忍びない ・出力ファイルが既に存在する。 ⇒上書きしてしまってよいか? ⇒ファイル名の後ろに(連番)を挿入するか?
  10. 可変要素の問題点は? ➢入力ファイル名 ➢矩形情報  左(Left)  上(Top)  幅(Width) 

    高さ(Height) ➢出力ファイル名 ➢出力形式(BMP,JPG,PNG) ・出力形式の指定は簡単ではない ⇒ImageFormatさえ入力できれば、候補値が出る。 ┗→指定させられるか? ⇒入力ファイルと同じ形式でよい? ┗→扱おうとしたファイルはなんだったか?
  11. 最終的な仕様 ➢入力ファイル名 存在する前提とする。存在しない場合は異常終了 ➢矩形情報  左(Left) 0より小さい、幅-1、高さ-1より大きい  上(Top) ⇒(0,0)位置を基点とする

     幅(Width) 1より小さい、幅、高さより大きい  高さ(Height) ⇒(幅,高さ)-(基点Left,基点Top)とする ➢(出力)出力ファイル名 ⇒入力ファイル名に本日時刻を付加とする ⇒画像形式は、入力と同じとする ⇒その為、指定させない。 結果!