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]