| Autor |
Beitrag |
Dusty
      
Beiträge: 62
Windows XP
Delphi 5 Enterprise
|
Verfasst: Sa 01.11.03 18:15
Ich lade JPEG-Bilder, die von einer Digitalkamera mit 5 Mio Pixel erstellt worden sind. Damit Bildschirmanzeige und Ausdruck in vertretbarer Zeit abgewickelt werden, wird das JPEG-Bild Scaliert (zB jsHalfSize) und nur grau dargestellt (GreyScale). Mich würde nun interessieren, ob ich die Größe des Bildes berechnen kann, ohne dieses Bild vorher in eine Datei schreiben zu müssen. Bislang kann ich nur Width und Height abfragen, um eine Größenordnung zu erhalten.
|
|
Andreas Pfau
      
Beiträge: 997
|
Verfasst: Sa 01.11.03 23:24
Hallo,
geh' auf Wotsit.org, suche nach JPEG, und schau dir an, wo in der Datei der Header ist, der die Größe enthält. Dann musst du mit 'nem Stream nur so viel lesen (ein paar Byte), dass du die Größe hast.
_________________ Life is a bad adventure, but the graphic is really good!
|
|
Dusty 
      
Beiträge: 62
Windows XP
Delphi 5 Enterprise
|
Verfasst: So 02.11.03 16:32
Es war ja gerade die Frage, wie ich die Größe ermittle, *ohne* eine Datei zu erzeugen. Also TImage.Picture.Graphic.Loadfromfile(JPEG-Datei, aber nur in Graustufen und nur halb so gross wie die Datei). Wie gross ist TImage.Picture.Graphic nun im Speicher? Ich habe die Images mal an den angehaltenen Drucker geschickt und geschaut, wie groß die Druckaufträge sind. Größe 100% + Farbe = 29 MB. Größe 50% + Graustufen = 2,4 MB.
Bitte beißt Euch nicht fest an dem Problem, es ist nicht so wichtig, es sei denn jemand hat die Lösung gerade mal parat. Ich dachte, man könnte es irgendwie mal schnell berechnen, so in der Art size = width * height * farbtiefe, was aber wohl nicht der Fall ist.
|
|
Andreas Pfau
      
Beiträge: 997
|
Verfasst: Mo 03.11.03 17:29
Hallo,
ich dachte, du willst die Maße in Pixel vom JPEG wissen - aber du meinst den Arbeitsspeicherbedarf.
Nur habe ich da keine Ahnung... innen MemoryStream schreiben, da muss man keine Datei erzeugen, aber du belegst immerhin RAM damit...
_________________ Life is a bad adventure, but the graphic is really good!
|
|
Brueggendiek
      
Beiträge: 304
Win 98, Win98SE, Win XP Home
D5 Std
|
Verfasst: Di 04.11.03 00:06
Hallo Dusty!
Da komme ich irgendwie nicht mit - sind die Bilder noch im RAM der Kamera oder schon auf dem Speichermedium darin? Oder kommt das Ganze aus dem Intenet?
Wenn die Daten auf dem Speicher der Kamara sind, wird das Ganze doch normalerweise wie ein Wechselplatten-Laufwerk angesprochen. Das ist wie eine Diskette oder ein CD-ROM und enthält ein Dateisystem, also Dateien.
Mittels "FileSize" oder dem Record bei "FindFirst / FindNext" kann man die Dateigröße ermitteln. Es ist dabei nicht nötig, die Dateien von der Kamera (oder dem Kartenleser) auf die Festplatte zu übertragen.
Gruß
Dietmar Brüggendiek
|
|
Dusty 
      
Beiträge: 62
Windows XP
Delphi 5 Enterprise
|
Verfasst: Di 04.11.03 13:52
Die Dateien werden als JPEG von der Kamera in das TImage geladen. Aber dort schon mit jsHalf (halbe Größe) und fsGreyScale (nur Graustufen). Durch diese beiden Einstellungen wird das Bild schon ungemein kleiner. Was mich interessiert hat, ist um *wie viel* das Bild kleiner wird. Allein durch GreyScale wird es etwa 70% kleiner, d. h. wenn ich das Bild zum Drucker schicke, wird der Druckauftrag um 70% kleiner, somit schneller. Das Bild wird nur gedruckt und nicht (zurück-) gespeichert. Also ein Programm, was Kamera-Bilder druckt, der Anwender soll anhand der Programm-Einstellungen (Größe des Bildes fsFull/fsHalf/fsQuarter/fsEights, das ganze in Farbe oder GreyScale) über den Speicherbedarf informiert werden. Den QuellCode habe ich gerade nicht parat, weil ich am falschen PC sitze.
|
|
Niels_
      
Beiträge: 117
|
Verfasst: Mo 17.11.03 16:42
Titel: Größe für Bilder
Du kannst leider nicht so eine Höhe*Breite*Farbtiefe nehmen. Jedes Bild füllt verschieden viel. Ein komplett weißes Bild füllt deutlich weniger als ein Foto-Bild. Genauso kannst du nicht sagen, um wieviel mal das Bild kleiner wird, da eigentlich ein "komplett" neues Bild erstellt wird (mit neuen Pixeln), und dadurch wieder verschieden groß wird.
Könnte man das bild nicht in ne Variable schmeißen und dann herausfinden, wie viel diese füllt? (hab nicht soviel Wissen, was das Gebiet angeht)
|
|
Dusty 
      
Beiträge: 62
Windows XP
Delphi 5 Enterprise
|
Verfasst: Mi 19.11.03 18:10
Der Denkansatz mit der Variable ist gut. Ich habe das Problem aber erstmal zurückgestellt. Trotzdem Danke für Dein Engagement. Vielleicht stößt ja nochmal jemand, der weiß, wie es geht, auf diesen Forenbeitrag 
|
|