Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - TImage Bildbreite ermitteln
Stauch - Di 29.06.04 11:52
Titel: TImage Bildbreite ermitteln
Folgendes kleines lustiges (?) Problem: Ich lade ein Bild in eine TImage Komponente und möchte dann die Anzahl der Pixel ermitteln. Im Prinzip kein Thema:
Delphi-Quelltext
1: 2:
| width:=Image1.picture.Width; height:=Image1.picture.Height; |
Aber die so ermittelten Werte stimmen nicht mit denen überein, die mir andere Programme (Phase 5 oder Photoshop) anzeigen. Woran könnte das liegen?
C.
MartinPb - Di 29.06.04 12:28
Wenn du die Größe der Bitmap haben willst:
Delphi-Quelltext
1: 2:
| width:=Image1.picture.Bitmap.Width; height:=Image1.picture.Bitmap.Height; |
Wenn du die Größe der Image-Komponete haben willst:
Delphi-Quelltext
1: 2:
| width:=Image1.Width; height:=Image1.Height; |
Stauch - Mi 30.06.04 12:51
bei mir liefert
Delphi-Quelltext
1:
| width:=Image1.picture.Bitmap.Width; |
mit konstanter Bosheit 0. :?
Muetze1 - Mi 30.06.04 14:12
Moin!
Dann hast du wahrscheinlich kein Bitmap geladen sondern z.B. ein MetaFile, Icon, JPEG oder anderes Format/Typ.
MfG
Muetze1
Stauch - Do 01.07.04 09:42
@muetze1: Egal ob gif, jpg oder bmp das Ergebnis ist immer Null :? :?:
Muetze1 - Do 01.07.04 22:49
Moin!
Bei mir nicht. Grundlegendes: Image1.Picture ist das allgemeine Objekt. Für die einzelnen Typen von Grafiken gibt es dann Unterobjekte, wie z.B. JPEG, Bitmap, Icon, Metafile und die haben dann auch wieder ihre Width und Height Angaben die dann direkt den Wert der geladenen Daten entsprechen. Also wenn es bei dir egal ob du nun Image1.Picture.Metafile.Width bei einem Metafile oder Image1.Picture.Icon.Width bei einem Icon immer 0 liefert, dann sprichst du wahrscheinlich das falsche Image an oder zu einem Zeitpunkt wo dieses keine Bilddaten enthält. Schau dir also nochmal deinen Code an...
MfG
Muetze1
Stauch - Fr 02.07.04 10:00
ne,ne, das Bild ist schon da. Ich habe ein bißchen experimentiert, da klappte es auch.
Aber in meinem "Problem"-Programm lade ich die Grafik mit dem folgenden Code(damit auch gifs erkannt werden - den habe ich von
espen)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| ... var fs : TFileStream; olegraphic : TOleGraphic; begin olegraphic := TOleGraphic.create; try fs := TFileStream.Create(FileName, fmOpenRead or fmSharedenyNone); olegraphic.LoadFromStream(fs); ImageBox.Picture.Assign(olegraphic); ... |
und da liefert imagebox.picture.width einen leicht abweichenden Wert (von der tatsächlichen Breite) ...bitmap.width immer noch 0. (Und ich habe tatsächlich ein Bitmap geladen und der Zugriff auf die Eigenschaften erfolgt erst nach dem Laden. Großes Pfadfinderehrenwort :D
MartinPb - Fr 02.07.04 11:19
Du verwendest TOleGraphic. Diese Information hättest du eigentlich schon am Anfang liefern sollen. Ole Objekte sind eigentlich nur bei Arbeiten mit ActiveX zu verwenden. Aber sei's drum.
Wenn du Bitmap.Width gleich 0 hast, dann kannst du keine Bitmap drinn haben. Aber ich hab etwas in der Delphi-Hilfe gefunden:
Hilfe hat folgendes geschrieben: |
Da TOLEGraphic OLE-Schnittstellen kapselt, kann die Klasse keine Informationen aus einer Datei lesen oder in einer Datei speichern. |
Wie gesagt arbeitest du mit einem Ole Objekt und die haben ihre Eigenarten.
Stauch - Mo 05.07.04 11:06
Zitat: |
Du verwendest TOleGraphic. Diese Information hättest du eigentlich schon am Anfang liefern sollen. |
Sorry. Ich hielt das nicht für wesentlich.
Aber damit stecke ich jetzt in einme ziemlichen Dilemma: Die Nutzung von TOleGraphic ermöglicht mir den Zugrif auf das .gif-Format, den ich auf andere Weise nicht hinbekommen habe - andererseits kriege ich jetzt wesentliche Informationen (Größe und Auflösung) nicht mehr ordentlich aus dem Datei-Header ausgelesen. :cry:
Wenn jemand einen Tip hat, wie ich rauskomme, ... das wäre stark.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!