Розробка програми для масштабувания зображення

Автор: Пользователь скрыл имя, 26 Февраля 2013 в 20:51, дипломная работа

Описание работы

Комп’ютерна графіка — це двовимірні зображення, які створюються, перетворюються, оцифровуються, обробляються і відображаються засобами обчислювальної техніки, включаючи апаратні і програмні засоби. Рухома комп'ютерна графіка називається комп’ютерним відео або комп’ютерною анімацією.

Содержание

ВСТУП……………………………………………………………...……………5
РОЗДІЛ 1 ТЕОРЕТИЧНА ЧАСТИНА ………………………………………...6
1.1 Комп'ютерна графіка……………………………………….….6
1.2 Растрова графіка……………………………………………….7
1.3 Векторна графіка………………………………….………….13
1.4 Формати графічних файлів …………………………………17
1.5 Алгоритми масштабування………………………………….18
1.5.1 EPX/Scale2x/AdvMAME2x…………………...……..21
1.5.2 Eagle Eagle………………………….……………..….22
1.5.3 2xSaI…………………………….………………….…23
1.5.4 Сімейство hqnx………………………………………23
1.5.5 Алгоритм в Паскалі………………………………….24
1.5.6 Алгоритм Копф-Ліщинський……………………….24
1.5.7 Застосування в емуляторах ігрових приставок……24
РОЗДІЛ 2 ПРАКТИЧНА ЧАСТИНА…………………………………………26
2.1 Програма в роботі………………………………………….…26
ВИСНОВКИ........................................................................................................33
ПЕРЕЛІК ВИКОРИСТАНИХ ДЖЕРЕЛ………………………………...……34
ДОДАТОК…………………………

Работа содержит 1 файл

Ministerstvo_obrazovania_Ukrainy000.doc

— 1.82 Мб (Скачать)

 

      for yp := 0 to 1 do

        for xp := 0 to 1 do begin

          pix := BM.Canvas.Pixels[xo + xp, yo + yp];

          c[xp, yp, 0] := GetRValue(pix);

          c[xp, yp, 1] := GetGValue(pix);

          c[xp, yp, 2] := GetBValue(pix);

        end;

 

      for col := 0 to 2 do begin

        k1 := (c[1,0,col] - c[0,0,col]) / dx;

        z1 := x * k1 + c[0,0,col] - x1 * k1;

        k2 := (c[1,1,col] - c[0,1,col]) / dx;

        z2 := x * k2 + c[0,1,col] - x1 * k2;

        k := (z2 - z1) / dy;

        res[col] := round(y * k + z1 - y1 * k);

      end;

      bm1.Canvas.Pixels[x,y] := RGB(res[0], res[1], res[2]);

    end;

    Form1.Gauge1.Progress := round(100 * y / bm1.Height);

    Application.ProcessMessages;

    if Application.Terminated then Exit;

  end;

  Form1.Gauge1.Progress :=0;

  Form1.Image1.Width:=BM1.Width;

  Form1.Image1.Height:=Bm1.Height;

  Form1.Image1.Picture.Graphic:=BM1;

end;

 

 

 

procedure TForm1.N2Click(Sender: TObject);

begin

  Bm:=Tbitmap.Create;

  Image1.AutoSize:=True;

  If OpenPictureDialog1.Execute then begin

  Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);

  BM.LoadFromFile(OpenPictureDialog1.FileName);

  end;

end;

 

procedure TForm1.N4Click(Sender: TObject);

begin

   SavePictureDialog1.FileName := FileName;

   If not SavePictureDialog1.Execute then exit;

   FileName := SavePictureDialog1.FileName;

   ColCount := Pos ('.', FileName);

   if ColCount <= 0 then s := '.bmp';

   FileName := FileName + s;

   Image1.Picture.SaveToFile(FileName);

end;

 

procedure TForm1.N5Click(Sender: TObject);

begin

  Close;

end;

 

 

procedure TForm1.FormDestroy(Sender: TObject);

begin

  BM.free;

end;

 

procedure TForm1.N7Click(Sender: TObject);

begin

    try

    dx:=strtofloat(Combobox1.Text) / 100;

    dy:=strtofloat(Combobox2.Text) / 100;

    t:=0;

    if (dx>0.5) and (dx<0.76) and (dy>0.5) and (dy<0.76) then t:=1

    else if (dx>0.6) and (dx<0.84) and (dy>0.76) and (dy<0.84) then t:=2

    else if (dx>0.84) and (dx<0.88) and (dy>0.84) and (dy<0.88) then t:=3;

    Interpolate(bm, dx, dy);

    except

    Showmessage('Ошибка: Загрузите изображение, или введите  корректное значение масштаба');

    exit;

    end;

end;

 

procedure TForm1.N8Click(Sender: TObject);

begin

Form1.Image1.Width:=BM.Width;

Form1.Image1.Height:=Bm.Height;

Form1.Image1.Picture.Graphic:=BM;

end;

 

procedure TForm1.FormCreate(Sender: TObject);

begin

  dx:= 1.0;

  dy:= 1.0;

end;

end.


Информация о работе Розробка програми для масштабувания зображення