
Графический образ (компонент Image)
Для отображения картинок соответствующих форматов в Delphi представлен компонент Image. Данный компонент представляет невидимый контейнер для размещения изображения растрового типа . Компонент Image имеет свойство Canvas, поэтому на его поверхности можно рисовать поверх находящегося на нем изображения. Компонент Image является более развитым, чем PaintBox, так как позволяет работать с графическими файлами.
Основным свойством является свойство Picture. Тип изображения задается свойством Bitmap. В объект типа TPicture изображение загружается из следующих источников:
Графического файла ( изображение загруженное на этапе проектирования увеличивает объем исполняемого файла )
Компонента содержащего изображение.
Для загрузки из файла используется метод LoadFromFile(FileName: String )
Image1.Picture.LoadFromFile(‘c:\Foto\MyFoto.bmp);
При загрузке изображения из содержащего его компонента необходимо указать тип изображения и использовать метод Assign.
Im2.Picture.Bitmap.Assign(Im1.Picture.Bitmap); // копирование из Im1 в Im2
Image2.Picture:=Image1.Picture; ); // копирование из Im1 в Im2
Для сохранения изображения в файле используется метод SaveToFile(FileName: String )
Image1.Picture.SaveToFile(‘c:\Foto\MyFoto.bmp);
Размер изображения определяется свойствами Height и Width и являются подсвойствами Picture. По умолчанию совпадает с размерами компонента. Если размер картинки не совпадает с областью изображения, то можно использовать свойства AutoSize и Stretch компонента Image. Если AutoSize принимает False, то картина или ее часть помещается в область без изменения, при значении True размеры области подстраиваются под картинку.
Свойство Stretch ( значение True ) подстраивает размеры картинки под область изображения, либо оставляет ее без изменения ( значение False ). Если размер картинки больше области и оба свойства принимают значение False ( по умолчанию), то изображение отсекается.
Компонент Image позволяет работать с изображениями типа Jpeg для этого необходимо подключить модуль JPEG. Для работы с данным форматом можно использовать переменные (объекты) типа TJPEGImage. При прорисовке изображения в компоненте Image из переменной типа TJPEGImage методом Draw формат изображения преобразуется на Bmp, это позволяет рисовать на холсте.
Пример 10 Копирование jpeg изображения из Image1 в Image2
Image1.AutoSize:=True; // установка размера компонента под картинку
Image1.Picture.LoadFromFile('Testimgp.jpg'); //загрузка изображения
Image2.Stretch:=True; // подстраивает размеры картинки под область изображения
Image2.Picture:=Image1.Picture;// копирование
Image2.Picture.SaveToFile('Testimgp1.jpg'); // запись картинки в файл (jpg)
Пример 11 Рисование на холсте с картиной из Jpeg файла
procedure TForm1.Button1Click(Sender: TObject);
var
Pic:TJPEGImage;
begin
Pic:=TJPEGImage.Create; // создание объекта типа TJPEGImage
Pic.LoadFromFile('Testimgp.jpg'); // загрузка изображения в переменную
Image1.Canvas.Draw(0,0,Pic); // прорисовка изображения (BMP) в Image
Image1.Canvas.Ellipse(0,0,30,30);
Image1.Picture.SaveToFile('Testimgp1.bmp');// запись картинки с эллипсом ( в формате BMP)
Pic.SaveToFile('Testimgp2.jpg'); // запись картинки из переменной ( в формате jpeg )
Pic.Free ;
end;
При работе с Jpeg форматом доступны ряд свойств:
GrayScale – вывод на экран в градации серого ( значение -True )
Scale – масштаб изображения ( jsFullSize – полный, jsHalf – половинный,
jsQuarter – четверть, jsEigth – 1/ 8 размера )
Performance – качество / скорость ( jsBestQuality, jsBestSpeed )
Пример 12 Свойства jpeg изображения
procedure TForm1.Button3Click(Sender: TObject);
var
Pic,Pic1:TJPEGImage;
begin
Pic:=TJPEGImage.Create; Pic1:=TJPEGImage.Create;
Image1.AutoSize:=True;
Pic.LoadFromFile('Testimgp.jpg');
Image1.Picture.Assign(Pic); // копирование в Image1 из переменной
TJPEGImage(Image1.Picture.Graphic).Grayscale:=true; // установка серого
Pic1.Assign(Image1.Picture); // копирование в переменную из Image1
// Image2.Picture:=Image1.Picture; // копирование в Image2 из Image1
Image2.Picture.Assign(Pic1); //копирование в Image2 из переменной
TJPEGImage(Image2.Picture.Graphic).Scale:=jsHalf; // установка масштаба
TJPEGImage(Image2.Picture.Graphic).PixelFormat:=jf8Bit;// 8 битны формат
Pic1.SaveToFile('Testimgp4.jpg');
Pic.Free; Pic1.Free;
end;