카테고리 없음

[윈도우즈 API] 화면 캡쳐하여 JPEG로 저장

쇼핑스크래퍼2 2023. 9. 5. 08:01
uese jpeg;

procedure JPEGprocess;
var
DeskTopDC:     HDc;
DeskTopCanvas: TCanvas;
BitmapRect:    TRect;
Bitmap:        TBitmap;
jpeg1:         TJpegimage;
begin
try
  jpeg1         := TJpegimage.Create;
  Bitmap        := TBitmap.Create; {BMP를 저장할 bitmap 생성}
  BitMap.Width  := Screen.Width;
  BitMap.Height := Screen.Height;
  BitmapRect    := Rect(0, 0, Screen.Width, Screen.Height);  {full screen 영역}

  {전체 window의 device context(DC) 을 얻는다}
  DeskTopDC     := GetWindowDC(GetDeskTopWindow);
  DeskTopCanvas := TCanvas.Create;
  DeskTopCanvas.Handle := DeskTopDC; {전체 window의 canvas를 얻습니다}

  // BitmapRect영역의 DeskTopCanvas에서 BitmapRect영역의 Bitmap.Canvas로
  // 복사받습니다
  Bitmap.Canvas.CopyRect(BitmapRect, DeskTopCanvas, BitmapRect);
  jpeg1.Assign(bitmap);
  jpeg1.SaveToFile('.bitmap.jpg');
  form1.Image1.Picture.LoadFromFile('.bitmap.jpg');
finally
  ReleaseDC(GetDeskTopWindow, DeskTopDC);
  DeskTopCanvas.Free;
  Bitmap.Free;
  jpeg1.Free;
end;
end;