Programowanie w języku Delphi » FAQ

Jak zapisać pojedyńczą klatkę z pliku odtwarzanego przez TMediaPlayer

  • 2007-05-27 21:52
  • 2 komentarze
  • 546 odsłon
  • Oceń ten tekst jako pierwszy
Procedure SaveFrame(FrameNumberToCapture: Integer; Filename: String);
var
 BMP : TBitmap;
 ADC : HDC;
 GetPoint : TPoint;
 MyJpeg: TJpegImage;
begin
 BMP := TBitmap.Create;
 BMP.Height := 240; // tu nalezy ustawić wysokość
 BMP.Width := 320; // a tu szerokość klatki filmu
 MediaPlayer1.TimeFormat := tfFrames;
 MediaPlayer1.Display := Panel1;
 GetPoint := Panel1.ClientToScreen(Point(0,0));
 ADC := GetDC(0);
 MediaPlayer1.Position := FrameNumberToCapture;
 Application.ProcessMessages;
 Bitblt(BMP.Canvas.Handle, 0,0,
            BMP.Width,BMP.Height,
            ADC, GetPoint.X, GetPoint.Y, SRCCOPY);
 
 MyJpeg:= TJpegImage.Create;
 MyJpeg.Assign(BMP);
 MyJpeg.SaveToFile(Filename);
BMP.free; 
MyJpeg.free;
end;


pobrane z Experts-Exchange

2 komentarze

dandi8 2005-06-29 17:15

Niestety nie działa to na plikach .Mpg :-(

Krzemin 2003-06-29 19:43

na końcu przydałoby się jeszcze
BMP.free; i MyJpeg.free;