웹 크롤러를 활용해서 원하는 자료가 있을 시 스크린 캡처 자료를 남기는 프로그램이 필요했는데
요즘 c# 으로 코드를 짠 게 언제더라? 생각하니 몇 년은 된 것 같다. 대부분 파이썬으로 간단하게 처리하다 보니
거의 쓰임이 없긴 없었지만, 이번에는 c#으로만들어봤다.
웹 크롤러 부분은 빼고 스크린 캡처 함수만 작성
기본적으로 기능 테스트만 할 거라서 테스트용 버튼을 하나 올려준다!
폼은 거의 버튼 하나만 들어가기 떄문에 폼 크기 설정은 300, 200으로 작게 설정하였다.
버튼을 클릭 시 기본 폼은 보이지 않은 상태에서 스크린 캡처 전체를 찍어야 하기 때문에
투명하게 폼을 변경하고 기준점을 변경해준 후 현재 윈도우 해상도 크기로 맞춰준다.
this.Opacity = 0;
this.Location = new Point(0, 0);
this.Size = Screen.PrimaryScreen.Bounds.Size;
현재 해상도 값을 변수에 저장한다.
비트맵 개체를 전체 크기로 설정한 후 이를 캡처해 저장
var fullScreen = Screen.PrimaryScreen.Bounds;
Bitmap Cap = new Bitmap(fullScreen.Width, fullScreen.Height);
Graphics Save_sc = Graphics.FromImage(Cap);
이제 저장된 캡쳐본을 파일로 저장한다.
using (var Savefile = new SaveFileDialog()) {
Savefile.OverwritePrompt = true;// 덮어쓰기
Savefile.FileName = @"c:\test\1.jpg";
Cap.Save(Savefile.FileName, ImageFormat.Jpeg);
}
폼을 다시 보이게 하고 기존 크기로 다시 변경해준다.
this.Opacity = 1;
this.Size = new Size(300, 200);
함수 코드 전체
private void func() {
this.Opacity = 0;
this.Location = new Point(0, 0);
this.Size = Screen.PrimaryScreen.Bounds.Size;
var fullScreen = Screen.PrimaryScreen.Bounds;
Bitmap Cap = new Bitmap(fullScreen.Width, fullScreen.Height);
Graphics Save_sc = Graphics.FromImage(Cap);
Save_sc.CopyFromScreen(PointToScreen(new Point(0, 0)), new Point(0, 0), fullScreen.Size);
using (var Savefile = new SaveFileDialog())
{
Savefile.OverwritePrompt = true;// 덮어쓰기
string Fname = Path.GetRandomFileName();
Savefile.FileName = @"c:\test2\"+ Fname+".jpg";
Cap.Save(Savefile.FileName, ImageFormat.Jpeg);
this.Opacity = 1;
this.Size = new Size(300, 200);
}
이제 테스트를 해보기 위해 버튼 클릭 이벤트에 연결해준다.
private void button1_Click(object sender, EventArgs e)
{
func();
}
버튼을 누를 때 마다 설정한 폴더에 파일이 생성된다.
크롤링을 하면서 이제 저 함수를 호출하면 완료.
파이썬은 많은 오픈소스와 라이브러리가 장점이긴 하지만 콘다 설치 시 빌드를 하면 사용하지도 않는 패키지 때문에 만들고 다시 필요 패키지만 설치해서 코드를 재작성하는 경우도 종종 있는데 c#은 윈폼을 간단하게 활용할 수 있는 장점도 있지만 빌드를 하면 확실히 용량이 작아서 좋다.
'web' 카테고리의 다른 글
SFTP로 파일 업로드 (0) | 2023.06.22 |
---|---|
구글 애드센스 승인 거절 (사이트가 다운되었거나 사용할 수 없음) (0) | 2022.11.03 |
티스토리 블로그 도메인 연결하기 - 호스팅 케이알 (0) | 2022.11.02 |
워드프레스 본문 광고 삽입 숏코드 만들기 (2) | 2022.09.21 |
애드센스 신청 후 광고 게제가 준비되지 않은 사이트 ( 사이트가 다운되었거나 사용할 수 없음 ) (2) | 2022.09.17 |
댓글