Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LR_Delphi_2.doc
Скачиваний:
12
Добавлен:
18.09.2019
Размер:
1.91 Mб
Скачать

Interface

uses

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

type

TForm1 = class(TForm)

Image1: TImage;

Image2: TImage;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

Label1: TLabel;

Label2: TLabel;

TrackBar1: TTrackBar;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedure TrackBar1Change(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

MyJpeg:TJpegImage;

MyBitMap:TBitmap;

MyMemory:TmemoryStream;

s1,s2,s3,s:string;

size:integer;

Implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

Image1.Picture.Assign(MyBitmap);

MyMemory.Clear;

Mymemory.LoadFromFile(s1);

str(MyMemory.Size,s3);

Label1.Caption:=s3;

end;

procedure TForm1.BitBtn2Click(Sender: TObject);

begin

MyJpeg.Assign(MyBitmap);

MyJpeg.CompressionQuality:=100;

MyJpeg.Compress;

MyJpeg.SaveToFile(s2);

Image2.Picture.LoadFromFile(s2);

MyMemory.Clear;

Mymemory.LoadFromFile(s2);

str(MyMemory.Size,s3);

Label2.Caption:=s3;

end;

procedure TForm1.TrackBar1Change(Sender: TObject);

begin

str(TrackBar1.Min,s3);

Label3.Caption:=s3;

str(TrackBar1.Max,s3);

Label4.Caption:=s3;

str(TrackBar1.Position,s3);

Label5.Caption:=s3;

MyJpeg.CompressionQuality:=TrackBar1.Position;

MyJpeg.Compress;

MyJpeg.SaveToFile(s2);

Image2.Picture.LoadFromFile(s2);

MyMemory.Clear;

Mymemory.LoadFromFile(s2);

str(MyMemory.Size,s3);

Label2.Caption:=s3;

end;

Initialization

s1:='E:\Eddy\Umd\Prg_YVU\LR\Delphi_examples_2\17_1\Picture.bmp';

s2:='E:\Eddy\Umd\Prg_YVU\LR\Delphi_examples_2\17_1\Picture.jpeg';

MyBitmap:=TBitMap.Create;

MyBitmap.LoadFromFile(s1);

MyMemory:=TmemoryStream.Create;

MyJpeg:=TJpegImage.Create;

end.

При запуске проекта на выполнение появляется окно в котором картинок нет. При нажатии на кнопку BitMap отображается исходная картинка и размер ее файла (в примере 309862), При нажатии на кнопку JpegImage отображается сжатая картинка и размер ее файла (в примере 89598). Это показано на рис. 17 .20. Картинки получены при качестве 100, когда никаких отличий не видно, хотя сжатый файл имеет размер примерно в 3 раза меньше.

рис. 17.20. Форма при запуске программы

Если теперь перемещать движок регулятора, сжатая картинка и размер ее файла динамически изменяются. Например, при коэффициенте качества 1 картинки имеют вид, показанный на рис. 17 .21. Размер сжатого файла 3119, т.е произошло сжатие примерно в 100 раз Граница заметности ухудшение качества для использованной картинки - коэффициент качества 10. При этом размер сжатого файла 5599, что примерно в 55 раз меньше, чем у исходного изображения.

рис. 17.21. Картинки при коэффициенте качества 1

Задание 2

Создать программу демонстрации анимации: движение самолета на фоне фабрики. Проект – приложение. В программе используются два файла растровых картинок, которые надо загрузить в ту же папку, где находится проект приложения:

  • фон - фабрика, файл factory.bmp,

  • движущийся объект - самолет, файл aplane.bmp.

Эти файлы находятся в папке УМД к ЛР.

Листинг модуля формы

unit prg_17_2_;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]