Einzelnen Beitrag anzeigen

axelf98

Registriert seit: 27. Aug 2003
Ort: Ennepetal
440 Beiträge
 
Delphi 2005 Personal
 
#1

Thumbnails/Vorschaubilder schnell erstellen

  Alt 13. Jun 2005, 23:27
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]
  Mit Zitat antworten Zitat