Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.09.03;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.039 c
2-1155460952
Vovan#1
2006-08-13 13:22
2006.09.03
Назначит событию процедуру


3-1150968481
PEAKTOP
2006-06-22 13:28
2006.09.03
Формат BLOB при экспорте в XML


15-1154674208
syte_ser78
2006-08-04 10:50
2006.09.03
Кто хочет помочь?


2-1155304942
Demand
2006-08-11 18:02
2006.09.03
Перетаскивание формы


15-1153117683
evvcom
2006-07-17 10:28
2006.09.03
Феодосия MP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский