Da ich diese Funktion hier recht nützlich fand und noch etwas verbessert habe, möchte ich sie euch wieder zur Vefügung stellen. Ich habe das destpic-Create aus dem Try genommen weils da nicht hingehörte. Zweitens habe ich die Sache mit der AspectRatio verbessert sodaß die Parameter height und width jetzt Maximalwerte sind, egal ob das Bild nun hoch- oder breitformatig ist.
Delphi-Quellcode:
procedure resizePicture(infile: string; outfile: string; width, height: integer;
aspectratio: boolean);
var srcpic, destpic:TBitmap32;
destrect, srcrect:TRect;
begin
srcpic:=TBitmap32.Create;
destpic:=TBitmap32.Create;
try
srcpic.LoadFromFile(infile);
if aspectratio=true then begin
if srcpic.Height > srcpic.Width then begin
width:=height * srcpic.width div srcpic.height;
end else begin
height:=width * srcpic.Height div srcpic.Width;
end;
end;
try
destpic.width:=width;
destpic.height:=height;
destrect:=Rect(0,0,destpic.width,destpic.height);
srcrect:=Rect(0,0,srcpic.width,srcpic.height);
srcpic.StretchFilter:=sfLanczos;
destpic.Draw(destrect,srcrect,srcpic);
finally
srcpic.free;
end;
//destpic.SaveToFile(outfile);
SaveImage(destpic, outfile);
finally
destpic.free;
end;
end;