Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

Re: mehrere Bilder skalieren, in einer Schleife

  Alt 17. Nov 2008, 18:20
Delphi-Quellcode:
procedure BildgroesseAendernJPGExt(Quelle,Ziel:TFileName; MaxBreite,MaxHoehe:integer);
var
  bmp : TBitmap;
  jpeg : TJpegImage;
  breite, hohe : integer;
begin
  Jpeg:=TJpegImage.Create;
  try // <--- wir tryen mal schon ab hier
    jpeg.LoadFromFile( Quelle ); // <--- Laden 1
    //Seitenverhältnisgrößen berechnen
    if jpeg.Width / MaxBreite < 1 then
      MaxBreite := jpeg.Width;
    if jpeg.Height / MaxHoehe < 1 then
      MaxHoehe := jpeg.Height;
    if jpeg.Width / MaxBreite > jpeg.Height / MaxHoehe
    then
      begin
        breite := round( jpeg.Width / ( jpeg.Width / MaxBreite ) );
        hohe := round( jpeg.Height / ( jpeg.Width / MaxBreite ) );
      end
    else
      begin
        breite := round( jpeg.Width / ( jpeg.Height / MaxHoehe ) );
        hohe := round( jpeg.Height / ( jpeg.Height / MaxHoehe ) );
      end;
  //WANDLUNG
  //try <--- etwas zu spät
    jpeg.LoadFromFile( Quelle ); // <--- Laden 2 - Warum schon wieder?
    bmp := TBitmap.Create;
    try
      bmp.width := breite;
      bmp.height := hohe;
      bmp.canvas.StretchDraw( Rect( 0, 0, bmp.width, bmp.height ), jpeg );
      jpeg.assign( bmp );
    finally
      bmp.Free;
    end;
    jpeg.SavetoFile( Ziel );
  finally
    jpeg.Free;
  end;
end;

[... sonstiger Code ...]

with ListView1 do
begin
  for ii := -1 + Items.Count downto 0 do
  begin
    dateiname := '';
    dateiname := ExtractFileName( ListView1.Items[ ii ].Caption );
    Label3.Caption := 'Status: bearbeite Bilder...(' + dateiname + ')';
    BildgroesseAendernJPGExt( ListView1.Items[ ii ].Caption, 'c:\test\' + LowerCase( dateiname ), 800, 800 );
  end;
end;
So nachdem man den Code jetzt auch lesen kann habe ich mal die Sachen die mir aufgefallen sind entsprechend kommentiert.

cu

Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat