zrzut ekranu 3 mb

0

szukalem i znalazlem tylko taka procedure i ona zapisuje zrzut o rozmiarze mb. macie jakis pomysł jak to zmienic??var
Can: TCanvas;
B: TBitmap;
begin
try
{ tworzenie zmiennej }
Can := TCanvas.Create;
{ przechwycenie uchwytu ekrnau }
Can.Handle := GetWindowDC(GetDesktopWindow);

{ tworzenie bitmapy }
B := TBitmap.Create;
B.Width := Screen.Width;
B.Height := Screen.Height;
B.Canvas.CopyRect(Rect(0, 0, Screen.Width, Screen.Height), Can, Rect(0, 0, Screen.Width, Screen.Height));
try // zapisz plik
B.SaveToFile('C:\plik.bmp');
except // w wyniku bledu...
raise Exception.Create('Bład w zapisie pliku...');
end;

finally
Can.Free;
B.Free;
end;
end;

end.

0

zapisuje zrzut o rozmiarze 3 mb

0

Nie napisałeś co chcesz zmienić?
Jeśli chcesz żeby C:\plik mniej zajmował, to zapisz go w formacie *.jpg

uses jpeg;

var
  Can: TCanvas;
  B: TBitmap;
  jpg: TJPEGImage;
begin
  try
 { tworzenie zmiennej }
    Can := TCanvas.Create;
 { przechwycenie uchwytu ekrnau }
    Can.Handle := GetWindowDC(GetDesktopWindow);

 { tworzenie bitmapy }
    B := TBitmap.Create;
    B.Width := Screen.Width;
    B.Height := Screen.Height;
    B.Canvas.CopyRect(Rect(0, 0, Screen.Width, Screen.Height), Can, Rect(0, 0, Screen.Width, Screen.Height));
    jpg := TJPEGImage.Create;
    jpg.Assign(B);
    try // zapisz plik
      jpg.SaveToFile('C:\\plik.jpg');
   except // w wyniku bledu...
     raise Exception.Create('Bład w zapisie pliku...');
   end;

  finally
    Can.Free;
    B.Free;
    jpg.Free;
  end;
end;
0

robiłem tak ale nawet po zmianie formatu zajmuje tyle samo

0
firun napisał(a)

robiłem tak ale nawet po zmianie formatu zajmuje tyle samo

To pewnie coś źle robisz. Podany wyżej kod skopiowałem do nowego pliku, skompilowałem i uruchomiłem i zrzut ekranu (1280 x 1024 x 32bit) zajmuje 250KB

0

spróbuj zrobić w jpg i dać kompresje :)

0

spoko dzieki :) nie zauwarzylem zmiennej jpeg:P

1 użytkowników online, w tym zalogowanych: 0, gości: 1