Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Formular als JPEG Speichern (https://www.delphipraxis.net/62317-formular-als-jpeg-speichern.html)

poterp 2. Feb 2006 20:22


Formular als JPEG Speichern
 
Hallo,
Bin noch ein Delphi anfänger, kann mich jemanden sagen, wie ich ein Formular (Oberfläche) als JPEG oder GIF speichern kann?????
Danke in Voraus :-D
P.S. Benutze Delphi 7

xaromz 2. Feb 2006 20:49

Re: Formular als JPEG Speichern
 
Hallo und herzlich Willkommen :party: !

Mit der Methode Delphi-Referenz durchsuchenGetFormImage Deines Formulars bekommst Du ein Bitmap des Forms. Wenn Du die unit JPEG.pas einbindest, kannst Du damit ein JPEGImage erstellen. Das weist Du dem JPEG das Bitmap zu (mit Delphi-Referenz durchsuchenAssign) und speichert das JPEG.
Etwa so:
Delphi-Quellcode:
procedure SaveJPEG(Form: TCustomForm; const Path: String);
var
  Bitmap: TBitmap;
  JPEG: TJPEGImage;
begin
  Bitmap := Form.GetFormImage;
  JPEG := TJPEGImage.Create;
  JPEG.Assign(Bitmap);
  JPEG.SaveToFile(Path);
  JPEG.Free;
  Bitmap.Free;
end;
Aufzurufen so:
Delphi-Quellcode:
SaveJPEG(Form1, 'C:\Screenshot.jpg');
Gruß
xaromz

poterp 2. Feb 2006 21:54

Re: Formular als JPEG Speichern
 
Danke Xaromz,
ich habe deine Methode Probiert uzw:
procedure SaveJPEG(Form: TCustomForm; const Path: String);
var
Bitmap: TBitmap;
JPEG: TJPEGImage;
begin
Bitmap := Form.GetFormImage;
JPEG := TJPEGImage.Create;
JPEG.Assign(Bitmap);
JPEG.SaveToFile(Path);
JPEG.Free;
Bitmap.Free;
end;


Aufzurufen so:
Delphi-Quellcode: markieren
SaveJPEG(Form1, 'C:\Screenshot.jpg');

und ich bekomme ein Mehrere Fehler meldung.
soll ich vorher eine Function GETImage deklarieren???

danke in Voraus

Hador 2. Feb 2006 22:07

Re: Formular als JPEG Speichern
 
Du musst noch
Delphi-Quellcode:
uses
  ... jpeg ...
hinzufügen

Die Prozedur würde ich noch folgendermaßen ändern:
Delphi-Quellcode:
procedure SaveJPEG(Form: TCustomForm; const Path: String);
var
  JPEG: TJPEGImage;
begin
  JPEG := TJPEGImage.Create;
  JPEG.Assign(Form.GetFormImage);
  JPEG.SaveToFile(Path);
  JPEG.Free;
end;
Und aufrufen kannst du sie z.B. so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  SaveJPEG(Self, 'C:\Formular.jpg');
end;
EDIT: Nutze bitte für Quellcode die Delphi Tags

xaromz 2. Feb 2006 22:48

Re: Formular als JPEG Speichern
 
Hallo,
Zitat:

Zitat von Hador
Die Prozedur würde ich noch folgendermaßen ändern:
...

Speicherleck! Speicherleck! Jehova! Jehova!

GetFormImage liefert Dir ein TBitmap zurück. Das muss auch freigegeben werden.

Gruß
xaromz

Hador 3. Feb 2006 13:01

Re: Formular als JPEG Speichern
 
Zitat:

Zitat von xaromz
Speicherleck! Speicherleck! Jehova! Jehova!

Du hast Jehova gesagt - Los steinigt ihn :wink:

Zitat:

Zitat von xaromz
GetFormImage liefert Dir ein TBitmap zurück. Das muss auch freigegeben werden.

:wall: Du hast vollkommen Recht.
Ich werde sofort als Bestrafung 1.000.000x schreiben: "Ich soll keine Speicherlecks produzieren!"

:gruebel: Nja - jetzt muss ich nur noch herausfinden, wiso mein Verstand das gestern vernachlässigt hat.

wildschwein 31. Dez 2009 19:11

Re: Formular als JPEG Speichern
 
he cool

danke für diese hilfe

jetzt frage ich mich wie man es programieren kann, dass der benutzer auswählen kann wo das bild gespeichert werden kann.

danke für deine nachträgliche hilfe

PhilmacFLy 31. Dez 2009 19:50

Re: Formular als JPEG Speichern
 
Am besten du benutzt eine SaveDialog
Delphi-Quellcode:
var
  JPEG: TJPEGImage;
begin
  if
  SaveDialog1.Execute
  then
  begin
    JPEG := TJPEGImage.Create;
    JPEG.Assign(Form1.GetFormImage);
    JPEG.SaveToFile(SaveDialog1.Filename);
    JPEG.Free;
  end;

wildschwein 1. Jan 2010 15:52

Re: Formular als JPEG Speichern
 
cool danke dür deine hilfe

wenn du mir jetzt noch veraten kannst wie der filename automatisch das datum als name wählt bist du der größte!

SirThornberry 1. Jan 2010 15:56

Re: Formular als JPEG Speichern
 
stop. Pro Thema nur eine Frage! Ansonsten findet man später über die Suchfunktion nichts und wenn jemand auf eine frühere Frage antwortet wird das auch ein riesiges Durcheinander.
Eröffne also bitte ein neues Thema wenn du eine neue Frage hast :)

Antonov 12. Apr 2016 00:41

AW: Formular als JPEG Speichern
 
Hallo,

die oben genannten Methoden habe ich probiert, und das gespeicherte Bild ist zwar übereinstimmend mit den Maßen meines Formulars, aber das Bild ist schwarz.
Ich nutze FreePASCAL mit Lazarus IDE. Weiß jemand, wo da der Haken sein könnte?

Grüße
Antonov

hoika 12. Apr 2016 05:04

AW: Formular als JPEG Speichern
 
Hallo,
zeig doch mal deinen Lazarus-Code.
(Unit jpeg ist eingebunden?, sonst mal als Bitmap speichern)


Heiko

Antonov 12. Apr 2016 20:45

AW: Formular als JPEG Speichern
 
So,

entschuldigt die späte Antwort.
Delphi-Quellcode:
var
  Bitmap: TBitmap;
begin
  Bitmap := Form1.GetFormImage;

  Bitmap.SaveToFile('testbmp.bmp');
  Bitmap.Free;
end;
ebenfalls kann ich kein jpeg benutzen, es beschwert sich, dass jpeg nicht gefunden wurde. Jede andere mit bekannte unit kann ich einbinden unter
Delphi-Quellcode:
uses ...
aber jpeg mag er nicht. Weiß der Teufel warum.

EDIT: Ist es möglich, dass FreePASCAL das jpeg schon integriert hat?
Ich habe es gerade getestet und kann Bilder auch in jpeg speichern, also so etwa
Delphi-Quellcode:
Bitmap.SaveToFile('testbmp.jpeg');
... ändert nichts dran, dass das Resultat immer noch schwarz ist, mit denselben Dimensionen wie das Formular.

Medium 13. Apr 2016 00:27

AW: Formular als JPEG Speichern
 
Ist das Formular zum Zeitpunkt der Ausführung dieser Methode sichtbar und im Vordergrund?

Antonov 13. Apr 2016 07:47

AW: Formular als JPEG Speichern
 
Ja, diese Trivialitäten habe ich natürlich berücksichtigt! :D
Ich löse die Prozedur über einen Button Click aus, da muss das Fenster im Vordergrund stehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:00 Uhr.

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