Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi BMP in JPG Umwandlung funktioniert nicht (https://www.delphipraxis.net/78958-bmp-jpg-umwandlung-funktioniert-nicht.html)

gauggi 13. Okt 2006 19:38


BMP in JPG Umwandlung funktioniert nicht
 
Ich habe ein grosses Problem. Wenn ich das Programm ausführe, wird ein runtime error erzeugt.

Hier der Code:

Delphi-Quellcode:
 var
  Bmp: TBitmap;
  Jpg: TJpegImage;
begin
  Bmp := TBitmap.Create;
  Jpg := TJpegImage.Create;
  try
    Bmp:=form1.Image1.Picture.Bitmap;
    Jpg.CompressionQuality:=spinedit1.Value;
    Jpg.Assign(Bmp);
    Jpg.SaveToFile(form1.SaveDialog1.FileName + '.jpg');
  finally
    Jpg.Free;
    Bmp.Free;
    end;
     Close;
  end;
Was ist da dran falsch?????

mfg Gauggi

Bernhard Geyer 13. Okt 2006 19:44

Re: BMP in JPG Umwandlung funktioniert nicht
 
Ganz klar. Du erzeugst ein Bitmap, weißt dem Bmp aber die Referenz eines anderen Bitmaps zu und gibst dann dieses Bitmap frei.

Dann hast Du eine Speicherlücke sund form1.Image1 steht ohne gültiges Bitmap da.

gauggi 13. Okt 2006 19:45

Re: BMP in JPG Umwandlung funktioniert nicht
 
Zitat:

Zitat von Bernhard Geyer
Ganz klar. Du erzeugst ein Bitmap, weißt dem Bmp aber die Referenz eines anderen Bitmaps zu und gibst dann dieses Bitmap frei.

Dann hast Du eine Speicherlücke sund form1.Image1 steht ohne gültiges Bitmap da.

wie kann ich das denn anders machen???

DGL-luke 13. Okt 2006 19:48

Re: BMP in JPG Umwandlung funktioniert nicht
 
Delphi-Quellcode:
//bmp holen
Bmp.Assign(Image1.Picture.Bitmap);
//bmp manipulieren
...
//bmp zurückschreiben
Image1.Picture.Bitmap.Assign(bmp);
//puffer freigeben
bmp.Free;

Hador 13. Okt 2006 19:51

Re: BMP in JPG Umwandlung funktioniert nicht
 
Das
Delphi-Quellcode:
//bmp zurückschreiben
Image1.Picture.Bitmap.Assign(bmp);
kannst du dir in deinem Fall sparen

Bernhard Geyer 13. Okt 2006 19:51

Re: BMP in JPG Umwandlung funktioniert nicht
 
Zitat:

Zitat von gauggi
wie kann ich das denn anders machen???

Oder direkt mit form1.Image1.Picture.Bitmap ohne lokale Bmp-Instanz


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:05 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