Текущий архив: 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.45 MB
Время: 0.032 c