unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Image1: TImage;
    Image2: TImage;
    Button1: TButton;
    Button2: TButton;
    Image3: TImage;
    Image4: TImage;
    Label1: TLabel;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
//    procedure Image4Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

//skalowanie pliku BMP z komponentu Image1 - skala 2:1
procedure TForm1.Button1Click(Sender: TObject);
var Pom_bitmap: TBitmap;
    szer,wys:integer;
begin
  szer:=Image1.Width*2;  //skala 2:1
  wys:=Image1.Height*2;  //skala 2:1
  Pom_bitmap:=TBitmap.Create;
  Pom_bitmap.Width:=szer;
  Pom_bitmap.Height:=wys;

  Pom_bitmap.Canvas.StretchDraw(Rect(0,0,szer,wys),Image1.Picture.Bitmap);
  //przepisanie wyskalowanej bitmapy do komponentu Image2
  Image2.Picture.Bitmap:=Pom_bitmap;
  //zwolnienie pamięci zajmowanej przez Pom_Bitmap
  Pom_Bitmap.FreeImage;

  //zapisanie przeskalowanego obrazu BMP do pliku
  Image2.Picture.SaveToFile('obr3.bmp');
end;


//skalowanie JPG
procedure TForm1.Button2Click(Sender: TObject);
//type TJPEGScale = (jsFullSize, jsHalf, jsQuarter, jsEighth);
begin
  //przekopiowanie obrazu JPG z komponentu Image3 do Image4
  Image4.Picture.Graphic:=Image3.Picture.Graphic;
  //skalowanie pliku JPG w komponencie Image4 - skala 1:2
  TJPEGImage(Image4.Picture.Graphic).Scale:=jsHalf;
end;

//kompresja obrazu w formacie BMP z komponentu Image2 do formatu JPG
procedure TForm1.Button3Click(Sender: TObject);
var obrazJPG: TJPEGImage;
begin
      obrazJPG := TJPEGImage.Create;
      //przeksztalcenie BMP w JPG
      obrazJPG.Assign(Image2.Picture.Bitmap);
      {zapisanie już skompresowanego obrazka (JPG) }
      obrazJPG.SaveToFile('aaa.jpg');
end;

//zapisz przeskalowany obraz JPG do pliku w formacie JPG
//do Image4 zaladowany zostal przeskalowany plik JPG
procedure TForm1.Button4Click(Sender: TObject);
var obrazJPG: TJPEGImage;
    obrazBMP:TBitmap;
begin
  obrazBMP:=TBitmap.Create;
  //przeksztalcenie JPG do formatu BMP - dekompresja
  obrazBMP.Assign(Image4.Picture.Graphic);

  obrazJPG:=TJPEGImage.Create;
  //kompresja do JPG
  obrazJPG.Assign(obrazBMP);
  //zapisanie na dysku obrazu JPG po przeskalowaniu z komponentu Image4
  obrazJPG.SaveToFile('bb.jpg');

  obrazBMP.FreeImage;
  obrazJPG.Free;
end;

//zapisz przeskalowany JPG do pliku w formacie BMP z komponentu Image4
procedure TForm1.Button5Click(Sender: TObject);
var obrazBMP:TBitmap;
begin
  obrazBMP:=TBitmap.Create;
  //przeksztalcenie JPG do formatu BMP - dekompresja
  obrazBMP.Assign(Image4.Picture.Graphic);
  obrazBMP.SaveToFile('bb.bmp');
end;

end.
