안녕하세요 모닝수잔입니다 :)

 

최근에 화면 스크린샷을 찍는 프로그램에 관심이 생겼는데 "Uipath RPA로도 가능할까?" 생각해보다가 Take Screenshot이라는 액티비티(Activity)가 있다는 사실을 알게 되었습니다. 그래서 오늘은 Uipath에서 Take Screenshot 액티비티를 활용하여 화면의 특정 부분을 캡쳐한 뒤 이미지 파일로 저장하거나, 이메일로 발송하는 간단한 프로세스를 다뤄보려고 합니다. 

 

 

프로세스(Process)는 네이버에서 "코로나 확진자"라는 검색어로 일일 확진자를 캡쳐하고 이미지 파일로 저장하는 과정입니다. 네이버 사이트를 열고 "코로나 확진자"를 검색하는 과정은 이미 되어있다는 가정하에서 캡쳐하는 부분부터 시작해보겠습니다.

 

1) Take Screenshot 액티비티를 불러온다.

Take Screenshot 액티비티는 화면의 특정 부분을 선택하면 해당 부분을 캡쳐해주는 액티비티입니다.

 

 

2) Take Screenshot - Indicate on screen을 클릭해서 캡쳐하고 싶은 부분을 선택하고 output에서 변수명을 지정해서 캡쳐된 부분을 이미지 형태로 저장해준다.

Indicate on screen을 클릭하면 화면의 조각조각을 선택할 수 있는데, 저는 네이버에서 "코로나 확진자"라는 키워드로 검색한 결과인 아래 화면에서 파란색 부분을 선택했습니다. 

 

 

 

그리고 Take Screenshot 액티비티의 Output 패널에 screenshot이라는 이름의 변수를 만들어서 캡쳐된 이미지를 저장해봤습니다. Variables 패널에도 screenshot이라는 Image 형식의 변수가 생성되어 있죠?

 

변수를 만드는 방법은 아래 화면 가장 아래 있는 빨간칸과 같이 Vairables 패널에서 Create Variable을 클릭해서 직접 변수 이름(Name), 변수 형식(Variable type), 범위(Scope), 기본값(Default)를 기재해서 만들어주셔도 되고, 아니면 아래 화면 우측 빨간칸에 있는 Output 패널에서 Screenshot 네모칸 부분을 클릭하고 Ctrl + K를 누르셔도 변수명을 입력할 수 있도록 나옵니다. 여기에서는 변수 이름(Name)만 입력하면 알아서 변수 형식(Variable type), 범위(Scope), 기본값(Default)가 정해지기 때문에 더 편리하답니다 :)

 

 

3) Save Image 액티비티를 불러온다.

Save Image 액티비티는 이미지를 특정 경로에 특정 파일명으로 저장해주는 액티비티입니다. 2)에서 캡쳐한 이미지를 저장해줘야 하는데요, Save Image - Input 패널의 Image 부분에는 저장할 이미지 변수, 즉 앞에서 캡쳐한 결과물 screenshot을 넣어줍니다. 그리고 FileName은 해당 이미지 변수를 저장해줄 파일 경로와 파일 이름입니다. 저는 바탕화면에 covid19라는 이름으로 지정해봤습니다. Save Image 액티비티 안에 있는 2개의 칸 중에서 2번째 칸 옆에 있는 폴더 모양 아이콘을 누르면 자동으로 경로를 찾아 원하는 이름으로 저장할 수 있으니 간단하답니다 :)

 

※ 이미지파일은 기본적으로 .png 확장자로 저장됩니다.

 

 

 

문제는 여기까지 설정하신 뒤에 프로젝트를 실행하면, 바탕화면에 covid19라는 이름으로 저장된 png 파일 결과물이 아래와 같이 나타난다는 점입니다. 코로나 확진자 수가 나와있긴 하지만, 전체 확진자 수만 보여주고 당일 확진자 수가 없죠? 그래서 이 범위를 수정해줄 필요가 있습니다. 

 

 

4) Take Screenshot 액티비티의 속성(Properties)에서 ClippingRegion 조정해줍니다.

앞서 2)의 과정에서 캡쳐할 파란색 범위를 선택할 때 전체 확진자 수와 + 일일 확진자 수를 함께 선택할 수 있었다면 좋았겠지만, 사실 2개의 데이터가 하나의 파란색 범위로 묶여 있지 않았기 때문에 함께 선택해줄 수 없었답니다. 여러분이 직접 해보셔도 2개의 범위가 같이 파란색 범위로 묶이지 않고 전체 확진자 수만 묶이거나 일일 확진자 수만 묶인다는 것을 확인하실 수 있을거에요. 그래서 이 범위를 수정해줘야 하는데, 이때 조정할 수 있는 수치가 바로 Take Screenshot 액티비티의 속성에 있는 ClippingRegion입니다.

 

 

ClippingRegion은 Left/Top/Right/Bottom 이렇게 4방향으로 나뉘어져 있는데 처음에 Take Screenshot에서 지정한 범위에서 좌측 위에 있는 시작점을 기준으로 왼쪽/위쪽/오른쪽/아래쪽을 조정해주시면 됩니다. 단위는 픽셀(pixel) 기준으로 +, - 모든 숫자가 들어갈 수 있습니다. 

 

예를 들면, 우리가 지금 필요한 범위는 아래 화면의 좌측 위에 있는 빨간색 시작점에서 오른쪽/아래쪽으로 늘어난 값이 필요한거잖아요? 늘어날 범위를 빨간색 네모로 그려봤는데요, 오른쪽으로 650 아래쪽으로 150이동하면 이 정도 범위가 된답니다. 범위는 몇개의 숫자를 넣으면서 대략적으로 확인해보실 수가 있어요. 참고로, 만약에 오른쪽/아래쪽에 - 값을 넣으면 아래 빨간색 시작점의 왼쪽/위쪽으로 이동하기 때문에 회색 바탕 값만 보이게 될겁니다 :)

 

※ System.Drawing.Bitmap..ctro(Int32 width, Int32 height, PixelFormat format) 오류

ClippingRegion을 설정하다가 이런 오류를 마주치실 수 있는데, 바로 width와 height 때문입니다. 말그대로 width는 넓이 height는 높이를 의미하는데요, 왼쪽/오른쪽 + 위쪽/아래쪽에서 각각 1개의 값은 무조건 지정해줘야 width와 height가 결정되기 때문에 이런 오류가 발생한답니다. 왼쪽에 - 값을 준다는 것은 = 오른쪽으로 + 이동한다는 것과 같은 의미이고, 위쪽에 - 값을 준다는 것은 = 아래쪽으로 + 이동한다는 것과 같은 의미이기 때문에 2개의 쌍을 각 set로 보고 하나라도 꼭 +/- 값을 넣어주세요.

 

 

ClippingRegion까지 설정하신 뒤 다시 프로세스를 실행해보신다면 아래와 같은 결과물을 확인하실 수 있습니다. 딱, 우리가 원하던 전체 확진자 수 + 일일 확진자 수까지 함께 확인되는 화면으로 캡쳐되었죠?

 

 

이렇게 Take Screenshot과 Save Image 액티비티만 사용하면 화면을 간단하게 캡쳐해서 저장할 수 있는데요, 다음 포스팅에서는 이 저장된 파일을 이메일로 보내는 프로세스를 한번 다뤄보도록 하겠습니다. 그럼 오늘도 좋은 하루 되세요 :)

 

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기