Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Работа с изображениями в Delphi: загрузка, сохранение и отображение в TImage

Delphi , Базы данных , Access

При работе с изображениями в среде Delphi, разработчики часто сталкиваются с задачами их загрузки, сохранения в базу данных и последующего отображения. В этой статье мы рассмотрим, как решить эти задачи на примере работы с изображениями в формате .jpeg, используя компоненты TImage и TMemoryStream.

Загрузка изображения в TImage

Для начала, давайте рассмотрим простой пример загрузки изображения в компонент TImage с помощью диалога открытия файла:

begin
  if OpenPictureDialog1.Execute(Self.Handle) then
    Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;

Сохранение изображения в базу данных

Сохранение изображения в базе данных, например, в MS Access, осуществляется с помощью TMemoryStream. Вот пример кода, который сохраняет изображение в поле BLOB:

var
  AStream : TMemoryStream;
begin
  AdoTable1.Append;
  AStream := TMemoryStream.Create;
  try
    Image1.Picture.Graphic.SaveToStream(AStream);
    AStream.Position := 0;
    if AdoTable1.Active then
    begin
      TBlobField(AdoTable1.FieldByName('Termograma')).LoadFromStream(AStream);
    end;
  finally
    AStream.Free;
  end;
  AdoTable1.Post;
end;

Отображение сохраненного изображения в TImage

Чтобы отобразить сохраненное изображение, необходимо его загрузить обратно в TImage. Для этого используется класс TJPEGImage:

var
  JPG: TJPEGImage;
  ms: TMemoryStream;
begin
  JPG:= TJPEGImage.Create;
  ms:= TMemoryStream.Create;
  try
    TBlobField(AdoTable1.FieldByName('Termograma')).SaveToStream(ms);
    ms.Position := 0;
    JPG.LoadFromStream(ms);
    Image2.Picture.Assign(JPG);
  finally
    JPG.Free;
    ms.Free;
  end;
end;

Универсальная функция для загрузки/сохранения изображений

Для удобства работы с различными форматами изображений можно использовать следующий модуль, который позволяет сохранять и загружать изображения, учитывая их формат:

unit LoadSaveImageBlobs;
interface
uses
  Classes, DB, Graphics, Jpeg, PngImage;
procedure SavePicture2Blob(Blob: TBlobField; Picture: TPicture);
procedure LoadPictureFromBlob(Picture: TPicture; Blob: TBlobField);
implementation
// Здесь находится реализация процедур SavePicture2Blob и LoadPictureFromBlob
initialization
  // Регистрация классов для различных форматов изображений
  RegisterClasses([TIcon, TMetafile, TBitmap, TJPEGImage, TPngImage]);
end.

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

Заключение

В данной статье были рассмотрены основные аспекты работы с изображениями в Delphi: загрузка, сохранение в базу данных и отображение в компоненте TImage. Приведенные примеры кода позволят разработчикам эффективно решать подобные задачи в своих проектах.

Создано по материалам из источника по ссылке.

Статья о работе с изображениями в Delphi, включая загрузку, сохранение и отображение в компоненте TImage.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Access ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-10 18:43:12/0.0035560131072998/0