![]() |
Speicherverbrauch von komprimierten Bildtypen
Hallo Zusammen,
weiß jemand von Euch wie ich den wahren Speicherverbrauch einer komprimierten Grafik (z.B. JPG oder GIF) mit Hilfe von Delphi herausbekomme, das ist glaube ich quasi die Größe, die sie auch auf der Festplatte verbrauchen würde, wenn sie ein Bitmap (z.B. BMP) wäre. Gruß Micha |
Re: Speicherverbrauch von komprimierten Bildtypen
dazu benötigst du die Bildgröße und die Farbtiefe kannst somit dann ausrechnen wieviel Byte verbraucht werden. Wozu brauchst du das? Mit dieser Variante weißt du zum Beispile nicht wieviel die Klasse zur Verwaltung der Bilddaten an Speicher benötigt.
|
Re: Speicherverbrauch von komprimierten Bildtypen
Ich habe so etwas mit dem TJclNullStream aus der JCL (JclStreams.pas) erledigt. Genaugenommen habe ich JclStreams.pas dafuer geschrieben. :-)
TJclNullStream ist ein Stream der nur Position und Size erhaelt. Die Daten schmeisst er weg. Wenn man nun das Bild im Bitmap-Format hat und mit SaveToStream in so einen Stream abspeichert, so hat man hinterher in Size die genaue Groesse als File. Ich brauchte das damit ich ein GIF-Bild solange verkleinern konnte bis es kleiner als 64K war. Fuer deine Zwecke duerfte es aber ausreichen die Groesse abzuschaetzen. X x Y x NumberOfBytesPerPixel. Dazu kommt noch der Bitmap-Header, der aber meist zu vernachlaessigen ist. |
Re: Speicherverbrauch von komprimierten Bildtypen
Allerdings sollte man dabei auch beachten, dass delphi bilder hexadezimal in der dfm speichert, dadruchwird es mehr platz brauchen, als im stream.
|
Re: Speicherverbrauch von komprimierten Bildtypen
Aber auch nur dort. Man kann das Bild auch in einer Resource aufheben und zur Laufzeit ins TImage laden. in der Resource ist es eine normale binaere Bitmap.
|
Re: Speicherverbrauch von komprimierten Bildtypen
Ich brauche die Größe nur zur Anzeige in einer Art ImageViewer (also nix mit DFM oder so). Der Ansatz mit der Größe und der Farbtiefe gefällt mir am besten, bleibt nur noch die Frage wie ich die "NumberOfBytesPerPixel" herausbekomme.
Gruß Micha |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:30 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