私はDelphi 7でデスクトップのスクリーンショットを作成するために関数を使用しました。正しいスクリーンショットを取得していますが、撮影サイズは約3 MBです。通常、スクリーンショットのサイズは150KB程度です。なぜ私は分からない。 ここに私のコードです:関数によって作成されたスクリーンショットは、Delphi 7で膨大なメモリを必要とします。
procedure TForm1.btnDesktopShotClick(Sender: TObject);
VAR
ScreenH, ScreenW : Integer;
dc : HDC;
hWin :Cardinal;
bm : TBitMap;
begin
//get handle of desktop
try
hWin :=GetDesktopWindow;
dc:=getDC(hWin);
ScreenH :=GetDeviceCaps(dc,VertRes);
ScreenW :=GetDeviceCaps(dc,HORZRES);
//set bitmap
bm:=TBitmap.Create;
bm.Width :=ScreenW ;
bm.Height :=ScreenH ;
//copy to dest bitmap
BitBlt(bm.Canvas.Handle,0,0,bm.Width ,bm.Height ,dc,0,0,SRCCOPY);
Image1.Picture.Bitmap.Assign(bm);
Image1.Picture.SaveToFile('screenShotDesktop.jpeg');
finally
ReleaseDC(hWin,DC);
end;
end;
助けていただければ幸いです。
おかげ
JPEGは非可逆形式では、出力サイズは、例えば、ほとんどのプログラムは、このオプションのスライダーを持っている(品質に依存します)と画像のサイズ。 (画像の大きさはどれくらいですか?) – Thanatos
resoultion is 1024 * 768 – CyprUS
FWIWロスレスPNGはJPGよりも良い選択になる可能性があります –