Как сохранить изображение jpg в базу данных, а затем загрузить его в Delphi, используя FIBplus и TImage? - PullRequest
0 голосов
/ 15 сентября 2008

Как сохранить изображение jpg в базе данных, а затем загрузить его в Delphi, используя FIBplus и TImage?

Ответы [ 4 ]

3 голосов
/ 16 сентября 2008
var
  S : TMemoryStream;
begin
  S := TMemoryStream.Create;
  try
    TBlobField(AdoQuery1.FieldByName('ImageField')).SaveToStream(S);
    S.Position := 0;
    Image1.Picture.Graphic.LoadFromStream(S);
  finally
    S.Free;
  end;
end;

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

0 голосов
/ 29 декабря 2014

Стол парадокса Delphi 7

вставить dbimage в jpeg

var
  FileStream: TFileStream;
  BlobStream: TStream;
begin
  if openpicturedialog1.Execute then
  begin
    Sicil_frm.DBNavigator1.BtnClick(nbEdit);
    image1.Picture.LoadFromFile(openpicturedialog1.FileName);
    try
       BlobStream := dm.sicil.CreateBlobStream(dm.sicil.FieldByName('Resim'),bmWrite);
       FileStream := TFileStream.Create(openpicturedialog1.FileName,fmOpenRead or fmShareDenyNone);
       BlobStream.CopyFrom(FileStream,FileStream.Size);
       FileStream.Free;
       BlobStream.Free;
       Sicil_frm.DBNavigator1.BtnClick(nbPost);
       DM.SicilAfterScroll(dm.sicil);
     except
       dm.sicil.Cancel;
     end;
  end;
end;

Ошибка «Растровое изображение является действительным»

0 голосов
/ 15 сентября 2008

Эта страница объясняет это. Используйте SaveToStream и TMemoryStream вместо SaveToFile, если вы не хотите временных файлов. TImage.Picture имеет LoadFromStream, который загружает изображение из потока в TImage для отображения.

0 голосов
/ 15 сентября 2008

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

...