Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Image из BLOB поля в Delphi 2009


Автор: alisa7 26.2.2010, 14:28
Доброе время суток!
Работаю в Delphi 2009. В таблице Firebird есть поле типа blob.
Как можно отобразить в Image картинку в формате .jpg из этого поля.
Может кто-то сталкивался, помогите плз!

Автор: Данкинг 26.2.2010, 20:31
Сохраняем картинку в файл:
Код

procedure tform1.Load_pic;
var S : TStream;
    FileS : TFileStream;
    FileName:string;
begin
  filename:='c:\temp.jpg';
  if zapros_ib2.FieldByName('jpg').IsNull then Exit;
  S:=zapros_ib2.FieldByName('jpg').DataSet.CreateBlobStream(zapros_ib2.FieldByName('jpg'), bmRead);
  if FileExists(FileName) then
    FileS:=TFileStream.Create(FileName, fmOpenWrite)
  else
    FileS:=TFileStream.Create(FileName, fmCreate);
  try
    FileS.CopyFrom(S, S.Size);
  finally
    S.Free;
    FileS.Free;
  end;
end;

filename - имя файла, в котором сохранится картинка, zapros_ib2 - IBQuery, 'jpg' - название BLOB-поля.

Автор: boojum 11.10.2011, 14:21
Данкинг, ответ конечно хорош, но это ответ НЕ на заданный вопрос. Человек спрашивает "Как можно отобразить в Image картинку", а вы рассказываете, как сохранить картинку в файл. В файл то сохранить нетрудно. И загрузить из файла нетрудно. Только устраивать временный файл для загрузки из базы ОЧЕНЬ некрасиво (еще некрасивее делать это через клипборд). Хотелось бы грузить картинку напрямую (из блоб-стрима). Только вот у TImage.Picture метод LoadFromFile есть, а вот LoadFromStream нету. Как быть? Вот в чем трудность то....  

Автор: AndreyIQ 11.10.2011, 14:26
Цитата(boojum @ 11.10.2011,  14:21)
Только вот у TImage.Picture метод LoadFromFile есть, а вот LoadFromStream нету. Как быть? Вот в чем трудность то....

У TJPEGImage есть LoadFromStream.

Автор: Данкинг 11.10.2011, 15:08
boojum, главное - вовремя отреагировать. smile 
Решение есть? Есть. А выбирает пусть каждый сам. А если кому-то кажется, что создавать временные файлы - это некрасиво, пусть и виндой тогда не пользуется.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)