Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Image speichern mit Darstellungsgröße (https://www.delphipraxis.net/166381-image-speichern-mit-darstellungsgroesse.html)

dal 10. Feb 2012 15:44

Image speichern mit Darstellungsgröße
 
Hallo,

ich möchte mich jetzt schon für den unpassenden Titel entschuldigen. Ich habe ein Bitmap, dieses lade ich in ein Image. Die Originalgröße des Bitmaps ist 2600*2000. In meinem Programm stelle ich das Image immer etwas manipuliert da. Das Bild verändere ich über image.Height bzw. image.width. Jetzt versuche ich das Bild als jpeg abzuspeichern mit
Delphi-Quellcode:
jpeg.Assign(image.Picture.Bitmap);
jpeg.SaveToFile(filepath);
Das Bild wird aber in der Originalgröße abgespeichert. Mir ist schon klar warum und was dort passiert.
Mein Frage ist, wie kann ich das Image als Datei abspeichern, so wie ich es auch im TImage sehe?
Anders formuliert, ich will das Image genauso in eine Datei ablegen, als ob ich ein Screenshot von dem Image mache.

DeddyH 10. Feb 2012 16:02

AW: Image speichern mit Darstellungsgröße
 
Wenn das Ergebnis proportional verkleinert werden soll, kannst Du es einmal mit StretchGraphic versuchen.

dal 13. Feb 2012 09:03

AW: Image speichern mit Darstellungsgröße
 
Hat jemand vielleicht noch eine andere Idee?

ConnorMcLeod 13. Feb 2012 09:09

AW: Image speichern mit Darstellungsgröße
 
Ein temporäres Bitmap erfinden und mit BitBlt dort in den gewünschten Dimensionen reinmalen und dieses speichern.

DeddyH 13. Feb 2012 09:13

AW: Image speichern mit Darstellungsgröße
 
Was ist denn an meiner Prozedur auszusetzen?

[edit]
Delphi-Quellcode:
jpeg := TJPEGImage.Create;
try
  StretchGraphic(image.Picture.Bitmap, jpeg, image.Width, image.Height);
  jpeg.SaveToFile(filepath);
finally
  jpeg.Free;
end;
Das sollte doch funktionieren, oder nicht?[/edit]

dal 13. Feb 2012 09:33

AW: Image speichern mit Darstellungsgröße
 
Leider funktioniert es nicht, oder ich versteh die Funktion falsch. Folgendes gebe ich ein:
Delphi-Quellcode:
try
  StretchGraphic(img1.Picture.Bitmap, jpeg, 2600, 10000);
  jpeg.SaveToFile(filepath);
finally
  jpeg.Free;
end;

DeddyH 13. Feb 2012 09:34

AW: Image speichern mit Darstellungsgröße
 
Ich dachte, Du willst das Bild in der Größe des TImage haben. Wieso gibst Du dann diese riesigen Dimensionen an? Schau Dir mein letztes Edit noch einmal an, das dürfte eher passen, denke ich.

dal 13. Feb 2012 09:50

AW: Image speichern mit Darstellungsgröße
 
Ja da hast du schon Recht, das Problem ist nur, das Originalbild stimmt nicht ganz in der Länge. In meiner Darstellung multipliziere ich mit 5, damit das Bild gestreckt wird. In der Darstellung sieht das auch gut aus, nur als Datei nicht. Mit deiner Funktion ändert sich das Bild proportional, egal ob ich height mal 5 setze.

DeddyH 13. Feb 2012 09:55

AW: Image speichern mit Darstellungsgröße
 
Dann ersetz einmal die Zeilen
Delphi-Quellcode:
temp.Width := round(src.Width * faktor);
temp.Height := round(src.Height * faktor);
durch
Delphi-Quellcode:
temp.Width := DestWidth;
temp.Height := DestHeight;
Die ganze Faktorenberechnung kann damit dann auch entfallen.

dal 13. Feb 2012 10:06

AW: Image speichern mit Darstellungsgröße
 
Jetzt funktioniert es :-D
Vielen Dank für die Hilfe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:44 Uhr.
Seite 1 von 2  1 2      

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