Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Grafik / Sound / Multimedia (https://www.delphipraxis.net/21-library-grafik-sound-multimedia/)
-   -   Delphi Thumbnails/Vorschaubilder schnell erstellen (https://www.delphipraxis.net/47614-thumbnails-vorschaubilder-schnell-erstellen.html)

axelf98 13. Jun 2005 23:27


Thumbnails/Vorschaubilder schnell erstellen
 
Folgend ein Code mit dem man mit ähnlicher Geschwindigkeit wie Windows XP Vorschaubilder aus JPGs erstellen kann:
Delphi-Quellcode:
Function SchnelleVorschaubilder(Datei: String; Groesse: Integer): TBitmap;
var
  JPG: TJPEGImage;
  Bitm: Tbitmap;
  Hoehe, Weite, X: integer;
  Verh: Double;
begin
  result := TBitmap.Create;
  JPG := TJPEGImage.Create;
  Bitm := TBitmap.Create;
  try
    JPG.LoadFromFile(Datei);
    JPG.Scale := jsEighth;
    Bitm.Assign(JPG);
    if (Bitm.Height > 0) AND (Bitm.Width > 0) then
    begin
      Verh := Bitm.Width/Bitm.Height;
      result.Width := Groesse;
      result.Height := Groesse;
      if Verh >= 1 then
      begin
        Hoehe := Round(Groesse/Verh);
        x := round((Groesse-Hoehe)/2);
        result.canvas.StretchDraw(Rect(0,X,Groesse,Hoehe+X),Bitm);
      end
      else
      begin
        Weite := Round(Groesse*Verh);
        X := round((Groesse-Weite)/2);
        result.Canvas.StretchDraw(Rect(x,0,Weite+x,Groesse),Bitm);
      end;
    end
    else
      result := nil;
  finally
    FreeandNil(Bitm);
    FreeandNil(JPG);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject); // Beispielaufruf
var
  Bitmap: TBitmap;
begin
  if Opendialog1.Execute then begin
    Bitmap := SchnelleVorschaubilder(OpenDialog1.FileName, 60);
    try
      Image1.Picture.Bitmap.Assign(Bitmap);
    finally
      Bitmap.Free;
    end;
  end;
end;
Der Beispielaufruf wurde von omata hier verbessert.

[edit=Chakotay1308]Titel angepasst. Mfg, Chakotay1308[/edit]
[edit=Chakotay1308]Styleguide und verbesserte Zuweisung. Mfg, Chakotay1308[/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:38 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