Einzelnen Beitrag anzeigen

manfred23

Registriert seit: 29. Aug 2008
Ort: Nürnberg
9 Beiträge
 
Delphi 6 Enterprise
 
#1

Width and Height of Images - Where is the Rest like Colors?

  Alt 29. Aug 2008, 10:56
Hallo liebe Forumleser und Delphibegeisterte,

Ich möchte wissen, wie viele Farben eine Bilddatei hat.

Dazu folgendes Beispiel:

Delphi-Quellcode:
uses ..., ... GraphicEx;

Image : TImage;

procedure mach;
var PicFile : TPicture;
    {(1)}
    dx, dy : integer; {dx=width, dy=height}
    bpp : byte; {BitsPerPixel}

begin
PicFile:=TPicture.Create;
{(2)}
try PicFile.LoadFromFile('Beispiel.BILD');
    {(3) Prop ... }
    Image.Picture:=PicFile;
    dx:=PicFile.Width; {width und height sind kein Problem}
    dy:=PicFile.Height;
    {(4) bpp:=???}

(*
Und hier verliesen sie mich...

Es gibt in GraphicEx eine TImageProperties für alle
unterstützten Formate, so auch ein Wert namens BitsPerPixel.
Bei BMP (und JPG) gibt es das T(JPEG)PixelFormat mit pfDevice, pf8Bit, ...

Ich habe also folgendes versucht bzw. eingefügt in den Quelltext oben:
...
(1) var Prop : TImageProperties; {ist okay}
...
(2) Prop:=TImageProperties.Create; {ist okay}
...
(3) Hier nun meine Frage.
Wie kriege ich die Daten aus dem gelesenen PicFile
in die Prop Variable, so daß dort alle Felder mit den
richtigen Werten gefüllt sind und ich sie zur Verfügung habe?

Ich habe so ziemlich alles versucht:
Prop:=LoadImageProperties(LoadFromFile('Beispiel.B ILD');
und sogar mit TGraphicExGraphic experimentiert,
aber entweder paßt dann TPicture nicht zu TGraphicExGraphic,
usw.

Gut, ich kann den Header des jeweils erkannten Bildformates
auslesen und so an die Werte rankommen, aber warum zweimal
auf eine Datei zugreifen? Wäre doch Schwachsinn, oder?

...
(4) bpp:=Prop.BitsPerPixel; {ist auch okay, übergibt aber nur den Wert 0 wegen fehlendem (3)}
...
(5) Prop.Free; {nicht zu vergessen}
*)


Delphi-Quellcode:
finally
    PicFile.Free;
    {(5)}
end;
end;
[edit=sakura] Delphi-Tags. Mfg, sakura[/edit]
  Mit Zitat antworten Zitat