Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Bildgröße von .jpg Dateien ermitteln? (https://www.delphipraxis.net/44723-bildgroesse-von-jpg-dateien-ermitteln.html)

Wuaegner 23. Apr 2005 14:38


Bildgröße von .jpg Dateien ermitteln?
 
Ich habe diese Prozedur getestet:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  fileheader: TBitmapfileheader;
  infoheader: TBitmapinfoheader;
  s: TFilestream;
  aFile : String;
begin
  aFile := 'C:\Benutzer\Orchidee.bmp';
  s := TFileStream.Create(aFile, fmOpenRead);
  try
    s.Read(fileheader, SizeOf(fileheader));
    //Nach dem filehaeder beginnt der infoheader
    s.Read(infoheader, SizeOf(infoheader));

    Form1.Label1.Caption := 'Width:      '
                            + FormatFloat('#,##0'
                            ,StrToFloat(IntToStr(infoheader.biWidth)));
    if infoheader.biHeight >=0 then
      Form1.Label2.Caption := 'Height:     '
                              + FormatFloat('#,##0'
                              ,StrToFloat(IntToStr(infoheader.biHeight)))
      else
        Form1.Label2.Caption := 'Height:     '
                                + FormatFloat('#,##0'
                                ,StrToFloat(IntToStr(infoheader.biHeight)))
                                +' (Top-down-DIB)';

  finally
    s.Free;
  end;
end;
sie funktionier aber nur bei .bmps,
was muss ich machen um die Bildgröße einer .jpg Datei ermitteln zu können?

DGL-luke 23. Apr 2005 14:43

Re: Bildgröße von .jpg Dateien ermitteln?
 
du willst höhe und breite?

dann weise das jpeg auf ein bitmap zu.

du willst dateigröße?

das sollte mit filesize() auch bei jpegs gehen.

du willst diese beiden angaben, ohne das jpeg decoden zu müssen?

dann kann ich dir nicht weiterhelfen.

Wuaegner 23. Apr 2005 14:45

Re: Bildgröße von .jpg Dateien ermitteln?
 
ich will nur höhe und breite.
Wie kann ich bei diesem Code Bsp. das JPEG auf ein Bitmap zuweisen?

SirThornberry 23. Apr 2005 14:49

Re: Bildgröße von .jpg Dateien ermitteln?
 
der Header von JPG-Dateien und BMP-Dateien unterscheidet sich schon, so das es eventuell nicht mit einer Zeile ändern (deines SourceCodes) getan ist. Du musst also mal nach der Headerspecifikation des JPG-Formates suchen und dann weißt du auch an welcher Stelle die Höhe und Breite in der Datei zu finden ist die du dann auslesen kannst.

DGL-luke 23. Apr 2005 15:12

Re: Bildgröße von .jpg Dateien ermitteln?
 
Delphi-Quellcode:
jpg:=TJPEGImage.create;
opendialog1.Execute;
jpg.LoadFromFile(opendialog1.FileName);

image1.Picture.Assign(jpg);
und dann kannst du dir von image1.picture.bitmap width und height holen.(aber nicht von image1 direkt !!)

SirThornberry 23. Apr 2005 15:16

Re: Bildgröße von .jpg Dateien ermitteln?
 
@DGL-luke: Ich glaub das ist genau das was er nicht will, du lädst das gesammte bild in den speicher obwohl du nur die bildgröße wissen willst...

Unter http://www.obrador.com/essentialjpeg/headerinfo.htm gibts die Headerspezifikation, hab dort allerdings noch gefunden an welcher Stelle die Größenangaben stehen

Wuaegner 23. Apr 2005 15:24

Re: Bildgröße von .jpg Dateien ermitteln?
 
OK ich habs jetz ganz einfach gelöst, danke!

Delphi-Quellcode:
procedure ZeigBreiteHoehe(Dateipfad: string;BreiteLabel,HoeheLabel: TLabel);
var jpg: TJPEGImage;
    breite,hoehe: Integer;
begin
   jpg:=TJPEGImage.Create;
    try
     jpg.LoadFromFile(Dateipfad);
      Breite:=jpg.width; //Die Höhe des JPEG's
      Hoehe:=jpg.Height; //Die Breite des JPEG's
    finally
      jpg.free;
    end;
     .
     .
     .
@Sir Thornberry: Mein Programm hat nur die Aufgabe diese Höhe und Breite anzuzeigen und sonst nix und habs getestet, es gibt keine Performanceprobleme obwohl das Bild immer komplett in den Speicher geladen wird. Is für mich glaube ich die einfachere jedoch ausreichende Art.

Die Muhkuh 23. Apr 2005 15:53

Re: Bildgröße von .jpg Dateien ermitteln?
 
Zitat:

Zitat von Wuaegner
OK ich habs jetz ganz einfach gelöst, danke!

Delphi-Quellcode:
procedure ZeigBreiteHoehe(Dateipfad: string;BreiteLabel,HoeheLabel: TLabel);
var jpg: TJPEGImage;
    breite,hoehe: Integer;
begin
   jpg:=TJPEGImage.Create;
    try
     jpg.LoadFromFile(Dateipfad);
      Breite:=jpg.width; //Die Höhe des JPEG's
      Hoehe:=jpg.Height; //Die Breite des JPEG's
    finally
      jpg.free;
    end;
     .
     .
     .
@Sir Thornberry: Mein Programm hat nur die Aufgabe diese Höhe und Breite anzuzeigen und sonst nix und habs getestet, es gibt keine Performanceprobleme obwohl das Bild immer komplett in den Speicher geladen wird. Is für mich glaube ich die einfachere jedoch ausreichende Art.

tja, bei nem riesen Pic dauerts halt bisschen.

Wuaegner 23. Apr 2005 16:01

Re: Bildgröße von .jpg Dateien ermitteln?
 
Richtig, nur mein Programm wird keine Riesenpics zu bewältigen habn und drum is es so das Einfachste. :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:29 Uhr.

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