Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.03;
Скачать: CL | DM;

Вниз

ADO+MS SQL + Image blob = ?   Найти похожие ветки 

 
j_a_g_o   (2006-06-26 16:51) [0]

коллеги помогите прочитьать данные хранящиеся в Blob -image поле бд MS SQL 2000 из программы на Delphi. Поиск по интернету показал актуальность проблемы, но предложенные варианты, читать через смещение в обычный TImage, успехом не увенчались.


 
Ega23 ©   (2006-06-26 17:12) [1]

function BLOBToImage(bf:TBLOBField; img:TImage):Boolean;
var
ms:TMemoryStream;
begin
Result:=False;
if bf.IsNull then Exit;
ms:=TMemoryStream.Create;
try
 try
  bf.SaveToStream(ms);
  ms.Position:=0;
  img.Picture.LoadFromStream(ms);
 finally
   ms.Free;
 end;
except
 Exit;  
end;
Result:=True;
end;


 
j_a_g_o   (2006-06-27 08:10) [2]

или руки кривые или лыжи не катят, но все равно не работает, вылетает при попытки загрузить из потока по причине "Bitmap image is not valid":
procedure TForm1.ADODataSetAfterScroll(DataSet: TDataSet);
var
 ms:TMemoryStream;
 bf:TBLOBField;
begin
 bf := TBLOBField(adodataset.fieldbyname("logo"));
 if bf.IsNull then Exit;
 ms:=TMemoryStream.Create;
try
try
  bf.SaveToStream(ms);
  ms.Position:=0;
  Image1.Picture.Bitmap.LoadFromStream(ms);
finally
  ms.Free;
end;
except
Exit;
end;
end;


 
Ega23 ©   (2006-06-27 09:10) [3]


> Image1.Picture.Bitmap.LoadFromStream(ms);

Image1.Picture.LoadFromStream(ms);


 
j_a_g_o   (2006-06-27 09:43) [4]

1. у стандартного TPicture нет методов работы с потокам
2. нашел выход через .. Сохраняю поток в файл и затем в Image загружаю картинку из файла

procedure TForm1.ADODataSetAfterScroll(DataSet: TDataSet);
var
 BS : TBlobStream;
 Memstr: TMemoryStream;
begin
 BS := TBlobStream(ADODataSet1.CreateBlobStream(ADODataSet1.FieldByName("DocImage"),bmR ead));
 try
   memstr := tmemorystream.Create;
   try
     memstr.LoadFromStream(bs);
     memstr.Position := 0;
     memstr.SaveToFile("image.jpg");
     image1.Bitmap.LoadFromFile("image.jpg");
   finally
     MemStr.Free;
   end;
 finally
   bs.free;
 end;
end;

P.S. оказывается *.bmp действительно хронятся в базе с дополнительным заголовком, а остальные форматы *.jpg, *.gif лежат в blob полях в виде нормальных файлов


 
j_a_g_o   (2006-06-27 09:51) [5]

как выяснилось проблема решена в компаненте TJvDBImage входящем в библиотеку JVCL


 
Ega23 ©   (2006-06-27 10:03) [6]


> P.S. оказывается *.bmp действительно хронятся в базе с дополнительным
> заголовком, а остальные форматы *.jpg, *.gif лежат в blob
> полях в виде нормальных файлов
>


Нет. Они ВСЕ хранятся именно в том виде, в котором ты их туда положил.



Страницы: 1 вся ветка

Текущий архив: 2006.09.03;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.073 c
15-1155250350
Германн
2006-08-11 02:52
2006.09.03
Ну вот. И у нас тут появился спам. :-(


15-1154854443
Kerk
2006-08-06 12:54
2006.09.03
Проблема с аськой


2-1155385177
apic
2006-08-12 16:19
2006.09.03
TListView


3-1151324150
Andrey00
2006-06-26 16:15
2006.09.03
Запретить трассировать с помощью SQL Monitor


15-1155181545
QuickFinder
2006-08-10 07:45
2006.09.03
Две операционные системы на одной машине