Saturday, June 02, 2007

základ

Všechny příklady mají stejný Všechny příklady mají stejný základ, liší se pouze ve výpočtu výsledných souřadnic. Zde je tedy základní kód:
procedure TForm1.Button1Click(Sender: TObject);
var
Bmp : TBitmap;
Jpg : TJpegImage;
ScaleX, ScaleY : Double;
begin
if Form1.OpenPictureDialog1.Execute then
begin
Jpg:=TJpegImage.Create;
try
Jpg.LoadFromFile(Form1.OpenPictureDialog1.FileName);
ScaleX := 320 / Jpg.Width;
ScaleY := 200 / Jpg.Height;
Bmp := TBitmap.Create;
try
Bmp.Width := Round(Jpg.Width * ScaleX);
Bmp.Height := Round(Jpg.Height * ScaleY);
Bmp.Canvas.StretchDraw(Bmp.Canvas.Cliprect, Jpg);
Jpg.Assign(Bmp);
Jpg.SaveToFile('resize.jpg');
finally
Bmp.Free;
end;
finally
Jpg.Free;
end;
end;
end;
V tomto případě dojde ke změně rozlišení na 320x200 pixelů (soubor je opět uložen pod pevně zvoleným názvem).
, liší se pouze ve výpočtu výsledných souřadnic. Zde je tedy základní kód:
procedure TForm1.Button1Click(Sender: TObject);
var
Bmp : TBitmap;
Jpg : TJpegImage;
ScaleX, ScaleY : Double;
begin
if Form1.OpenPictureDialog1.Execute then
begin
Jpg:=TJpegImage.Create;
try
Jpg.LoadFromFile(Form1.OpenPictureDialog1.FileName);
ScaleX := 320 / Jpg.Width;
ScaleY := 200 / Jpg.Height;
Bmp := TBitmap.Create;
try
Bmp.Width := Round(Jpg.Width * ScaleX);
Bmp.Height := Round(Jpg.Height * ScaleY);
Bmp.Canvas.StretchDraw(Bmp.Canvas.Cliprect, Jpg);
Jpg.Assign(Bmp);
Jpg.SaveToFile('resize.jpg');
finally
Bmp.Free;
end;
finally
Jpg.Free;
end;
end;
end;
V tomto případě dojde ke změně rozlišení na 320x200 pixelů (soubor je opět uložen pod pevně zvoleným názvem).