Rozmiary bitmapy

Adam Boduch

Wbrew pozorom naprawdę nie jest to trudne.
Naprawdę, wystarczy tylko jedna procedura. Potrzebna będzie
tylko klasa TCanvas i procedura StretchDraw. Gotowy program możesz
ściągnąć tutaj.
Jest tam przykładowy obrazek oraz kod źródłowy programu.

Na formie umieściłem komponent Image, który służy
jedynie do pokazania podglądu obrazka, który będziemy edytować.
Dwa komponenty TEdit, które przechowują nowe rozmiary
obrazka.

Cała procedura konwersji rozmiarów przedstawia
się następująco:

procedure TMainForm.spdConvertClick(Sender: TObject);
var
  BitmapSrc, BitmapDst : TBitmap;
  nR : TRect;
begin
  BitmapSrc := TBitmap.Create; // stworz bitmape - stara - zrodlowa
  BitmapDst := TBitmap.Create; // nowa bitmapa - ze zmienionymi rozmiarami
  try
    BitmapSrc.Assign(Image.Picture.Graphic); // pobierz obraz z komponentu

  { pobieramy rozmiary wpisane przez uzytkownika }
    BitmapDst.Width := StrToInt(edtWidth.Text);
    BitmapDst.Height := StrToInt(edtHeight.Text);

  { tutaj do zmiennej typu TRect zapisujemy nowe rozmiary }
    nR := Rect(0, 0, StrToInt(edtWidth.Text), StrToInt(edtHeight.Text));
    BitmapDst.Canvas.StretchDraw(nR, BitmapSrc); // konwert do nowych rozmiarow
    if SaveDialog.Execute then
      BitmapDst.SaveToFile(SaveDialog.FileName);  // zapisanie bitmapy do pliku
  finally
  { zwolnienie pamieci }
    BitmapSrc.Free;
    BitmapDst.Free;
  end;
end;

Wszystko co najważniejsze opisane jest w
komentarzu. Jak mówiłem nie jest to nic nadzwyczajnego.

0 komentarzy