Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi TImage Speichern (https://www.delphipraxis.net/73025-timage-speichern.html)

Gehstock 11. Jul 2006 07:26


TImage Speichern
 
Ich möchte den Inhalt eines TImages per dialog als *.jpg speichern. Der Dialog klappt schonmal nur weiß er noch nicht was er speichern soll

marabu 11. Jul 2006 07:40

Re: TImage Speichern
 
Guten Morgen.

Über den Dialog ermittelst du nur den gewünschten Speicherort (filename). Du musst die Unit JPeg einbinden, das Bitmap aus der TImage-Komponente per Assign() der JPegImage-Komponente zuweisen und dann kannst du mit der Methode SaveToFile() die JPG-Datei erstellen.

Grüße vom marabu

Gehstock 11. Jul 2006 07:44

Re: TImage Speichern
 
Delphi-Quellcode:
procedure TFormMain.Button27Click(Sender: TObject);
begin
   with SaveDialog do begin
     FilterIndex:=1;
     FileName := IniFile.ReadString('Setup','Screen,+1','Screen.jpg');
     InitialDir := ExtractFilePath(FileName);
     FileName := ExtractFileName(FileName);
     if InitialDir = '' then IniFile.ReadString('Setup','DirOld','.\');
     if not DirectoryExists(InitialDir) then
      InitialDir := IniFile.ReadString('Setup','DirOld','.\');
     DefaultExt := 'jpg';
     Filter := 'Jpg (*.Jpg)|*.Jpg|All files (*.*)|*.*';
     Options:=Options+[ofFileMustExist]-[ofHideReadOnly]
        +[ofNoChangeDir]-[ofNoLongNames]-[ofNoNetworkButton]-[ofHideReadOnly]
        -[ofOldStyleDialog]-[ofOverwritePrompt]+[ofPathMustExist]
        -[ofReadOnly]-[ofShareAware]-[ofShowHelp];
     Title:='Screen Speichern';
   end;//with
  if SaveDialog.Execute then begin
        [color=#009fff]Image1.Create(SaveDialog.FileName,fmCreate);[/color]
         exit;
end;
end;

hab es so erzeugt aber "Incompitable types "TComponent" and "TFilename""

marabu 11. Jul 2006 07:59

Re: TImage Speichern
 
Eher so:

Delphi-Quellcode:
uses
  JPEG;

procedure TFormMain.Button27Click(Sender: TObject);
var
  jpg: TJpegImage;
begin
  with SaveDialog do
  begin
    // ...
    if Execute then
    begin
      jpg := tJpegImage.Create;
      jpg.Assign(Image1.Picture.Bitmap);
      jpg.SaveToFile(FileName);
      jpg.Free;
    end;
  end;
end;
Getippt und nicht getestet.

marabu

TeronG 11. Jul 2006 08:01

Re: TImage Speichern
 
Gibt es das Image1 (sammt Inhalt) schon?

dann sollte das nach "if SaveDialog.Execute then" funtzen
Delphi-Quellcode:

uses
  jpeg,
...

var
  JPGBild : TJPEGImage;
...

  with JPGBild do begin
    JPGBild := TJPEGImage.Create; //JPG erstellen
    Assign(Image1.Picture); //JPG die Bilddaten vom Image übergeben
    SaveToFile(SaveDialog.FileName); // Speichern mit dem Filename vom SaveDialog
    Free; // freigeben ...
  end;
EDIT: ??? Keine rote box?

Gehstock 11. Jul 2006 08:23

Re: TImage Speichern
 
@marabu klappt net
@TeronG genau so

danke euch beiden

TeronG 11. Jul 2006 08:25

Re: TImage Speichern
 
Zitat:

Zitat von Gehstock
@marabu klappt net
@TeronG genau so

danke euch beiden

mag sein .. ich glaub aber nicht, daß dir dein Delphi auch "klappt net" gesagt hat ;-)

naudoc 18. Jun 2007 21:17

Re: TImage Speichern
 
Hallo,
ich habe den obigen Quelltext für mich so verändert:
Delphi-Quellcode:
procedure TForm1.Graphalsjpgspeichern1Click(Sender: TObject);
begin
 with JPGBild do begin
    JPGBild := TJPEGImage.Create; //JPG erstellen
    Assign(Image2); //JPG die Bilddaten vom Image übergeben
    SaveToFile(SaveDialog1.FileName); // Speichern mit dem Filename vom SaveDialog
    Free; // freigeben ...
  end;
end;
Dann kommt beim Klick auf den Button jedoch folgender Fehler:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project1.exe ist eine Exception der Klasse EConvertError aufgetreten. Meldung: 'TImage kann nicht zu TJPEGImage zugewiesen werden'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------

Was habe ich falsch gemacht?

Hilfe wäre nett...

Danke!

Khabarakh 18. Jun 2007 21:20

Re: TImage Speichern
 
Vergleiche einmal genau deine und TeronGs "Assign"-Zeile.

naudoc 18. Jun 2007 21:30

Re: TImage Speichern
 
Ja, aber dann kommt ne andre Fehlermeldung..
und: gibt das picture auch die selbst(über canvas) gemalten Dinge ab?

DAnke!


EDIT:

Hier der Fehler:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project1.exe ist eine Exception der Klasse EConvertError aufgetreten. Meldung: 'TPicture kann nicht zu TJPEGImage zugewiesen werden'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------

Danke nochmal!

mfG


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:34 Uhr.
Seite 1 von 2  1 2      

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