Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Grafik / Sound / Multimedia (https://www.delphipraxis.net/21-library-grafik-sound-multimedia/)
-   -   Delphi Abmessungen von Bilddateien per GDI+ ermitteln (https://www.delphipraxis.net/65041-abmessungen-von-bilddateien-per-gdi-ermitteln.html)

KingIR 11. Mär 2006 12:55


Abmessungen von Bilddateien per GDI+ ermitteln
 
Dieser kleine Tipp beschreibt wie man mit Hilfe von GDI+ die Größe (Breite/Höhe) von beliebigen Bilddateien im PNG, BMP, GIF, JPEG, WMF u.a.-Format ermitteln kann. Die GDI+-DLL (gdiplus.dll) wird seit Windows XP von Microsoft mit ausgeliefert, kann aber auch für ältere Windows-Versionen heruntergeladen und mit der eigenen Anwendung verteilt werden.

Delphi-Quellcode:
type
  GDIPlusStartupInput = record
    GdiPlusVersion: integer;
    DebugEventCallback: integer;
    SuppressBackgroundThread: integer;
    SuppressExternalCodecs: integer;
  end;

var
  hGDIP: Cardinal;
  StartUpInfo: GDIPlusStartupInput;
  GdiplusStartup: function(var token: Integer; var lpInput: GDIPlusStartupInput; lpOutput: Integer): Integer; stdcall;
  GdiplusShutdown: function(var token: Integer): Integer; stdcall;
  GdipLoadImageFromFile: function(FileName: PWideString; var image: Integer): Integer; stdcall;
  GdipGetImageDimension: function(image: Integer; var Width, Height: Single): Integer; stdcall;
  GdipDisposeImage: function(image: Integer): Integer; stdcall;
  GdipToken: Integer;
  hImg: Integer;
  ImgWidth, ImgHeight: Single;
  UnicodeFileName: WideString;
Delphi-Quellcode:
hGDIP := LoadLibrary('gdiplus.dll');
if hGDIP <> 0 then
begin
  GdiplusStartup := GetProcAddress(hGDIP, 'GdiplusStartup');
  if Assigned(GdiplusStartup) then
  begin
    FillChar(StartUpInfo, SizeOf(StartUpInfo), 0);
    StartUpInfo.GdiPlusVersion := 1;
    if GdiplusStartup(GdipToken, StartUpInfo, 0) = 0 then
    begin
      GdiplusShutdown := GetProcAddress(hGDIP, 'GdiplusShutdown');
      GdipLoadImageFromFile := GetProcAddress(hGDIP, 'GdipLoadImageFromFile');
      GdipGetImageDimension := GetProcAddress(hGDIP, 'GdipGetImageDimension');
      GdipDisposeImage := GetProcAddress(hGDIP, 'GdipDisposeImage');

      UnicodeFileName := 'YOUR IMAGE FILE HERE';

      if GdipLoadImageFromFile(PWideString(UnicodeFileName), hImg) = 0 then
      begin
        GdipGetImageDimension(hImg, ImgWidth, ImgHeight);
        // Do something with the results here!
        MessageBox(FloatToStr(ImgWidth) + 'x' + FloatToStr(ImgHeight), 'Bildgröße');
        GdipDisposeImage(hImg);
      end;
      GdiplusShutdown(GdipToken);
    end;
  end;
  FreeLibrary(hGDIP);
end;
[edit=Chakotay1308]Delphi-Style und -Tags korrigiert. Mfg, Chakotay1308[/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:08 Uhr.

Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf