Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Desktop bild erstellen (https://www.delphipraxis.net/59070-desktop-bild-erstellen.html)

N47R0N 16. Dez 2005 22:33


Desktop bild erstellen
 
also ich habe nur ma so aus spass vor das ein programm nach einer weile ein bild von meinem momentanen screen macht.

da habe ich mir mit etwas hilfe das hier zusammengebastelt:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Var DeskHw,DeskHdC : Longint;
begin
DeskHw:=getdesktopwindow;
DeskHdc:=getdc(deskHw);
img.height:=screen.Height;
img.width:=screen.Width;
BitBlt(img.Canvas.Handle,0,0,screen.Width,
screen.Height,DeskHdc,0,
0,SRCCOPY);
sleep(200);
if fileexists('screen.jpg') then deletefile('screen.jpg');
img.Picture.SaveToFile('screen.jpg');
end;

end.
wenn man also auf den button klickt wird der desktop wie er ist als bild gespeichert und als screen.jpg abgespeichert.

nunja mein problem ist das die größe dieser jpg dann 3MB beträgt woran liegt das?
wie kann ich das ändern?

danke

Airblader 16. Dez 2005 22:36

Re: Desktop bild erstellen
 
Erstelle dir eine Variable vom Typen TJpegImage, dort kannst du speichern und vorher Compression und CompressionQuality einstellen ;)

MfG, air
P.S.: Unit "JPEG" einbinden! ;)

Edit:
Achja, die Prozedur die du dann noch brauchst ist Delphi-Referenz durchsuchenAssign

jim_raynor 16. Dez 2005 22:36

Re: Desktop bild erstellen
 
Zitat:

Zitat von N47R0N
img.Picture.SaveToFile('screen.jpg');

Weil Picture.SaveToFile dies als BMP speichert ... Schau mal hier im Forum nach Hier im Forum suchenJPEG speichern.

turboPASCAL 17. Dez 2005 05:25

Re: Desktop bild erstellen
 
Ein Beispiel:

Delphi-Quellcode:
uses JPEG;

procedure TForm1.Button1Click(Sender: TObject);
const
  FileName = '.\screen.jpg';
  JpgQuality = 98; // 1..100
var
  DeskHdC : Longint;
  JpgImg: TJPEGImage;
  BmpImg: TBitmap;
begin
  JpgImg := TJPEGImage.Create;
  BmpImg := TBitmap.Create;
  try
    DeskHdc := GetDC(GetDesktopWindow);
    BmpImg.Height := Screen.Height;
    BmpImg.Width := Screen.Width;

    BitBlt(BmpImg.Canvas.Handle,
           0,
           0,
           Screen.Width,
           Screen.Height,
           DeskHdc,
           0,
           0,
           SRCCOPY);

    JpgImg.Assign(BmpImg);

    if FileExists(FileName) then DeleteFile(FileName);

    JpgImg.CompressionQuality := JpgQuality;
    JpgImg.SaveToFile(FileName);

    //Previewimage
    Image1.Picture.Assign(BmpImg);
  finally
    JpgImg.Free;
    BmpImg.Free;
  end;
end;

N47R0N 17. Dez 2005 11:40

Re: Desktop bild erstellen
 
Big THX :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz