algorytm.org

Implementacja w Delphi/Pascal



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Zmiana wielkości obrazu - Najbliższe sąsiedztwo - Implementacja w Delphi/Pascal
Ocena użytkownikóww: *****  / 1
SłabyŚwietny
Nadesłany przez Tomasz Lubiński, 29 marca 2006 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

Zmiana wielkosci obrazu - Nearest Neighbour - Delphi/NN.pas:
// Zmiana wielkosci obrazka -
// Algorytm Nearest neighbour - najblizsze sasiedztwo
// www.algorytm.org
// Tomasz Lubinski (c) 2006

unit NN;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, ExtCtrls, StdCtrls, jpeg;

type
  TForm1 = class(TForm)
    src: TImage;
    dst: TImage;
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Label3: TLabel;
    Edit2: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
   i,j, x,y: Integer;
   ratiox, ratioy : Double;
begin
   dst.Width := StrToInt(Edit2.Text);
   dst.Height := StrToInt(Edit1.Text);
   dst.Picture.Bitmap.Width := dst.Width;
   dst.Picture.Bitmap.Height := dst.Height;
   ratiox := (src.Width-1)/(dst.Width-1);
   ratioy := (src.Height-1)/(dst.Height-1);

   for i:=1 to dst.Width do
      for j:= 1 to dst.Height do
         begin
            x := Round((i-1) * ratiox + 1);
            y := Round((j-1) * ratioy + 1);
            dst.Canvas.Pixels[i,j] := src.Canvas.Pixels[x,y];
         end;
end;

end.
Dodaj komentarz