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

Вниз

Загрузка в Image1 рисунка из BLOB поля   Найти похожие ветки 

 
VALUA   (2006-06-23 17:59) [0]

Господа есть поле BLOB , необходимо его загрузить в компонент
Image1 -> код программы :

var Bm1:TMemoryStream;
   Jp1:TBitmap;
   Jp2:TJPEGImage;
   notJpg:Boolean;
begin
IBQuery1.Close;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add("Select * from TABL_KV_S_KOD(:P0)");
IBQuery1.Params[0].AsInteger := Kod;
IBQuery1.Open;
notJpg := False;
 Bm1:= TMemoryStream.Create;
 IBQuery1PLAN_KV.SaveToStream(Bm1);
 Bm1.Position := 0;
 if (Bm1.Size > 0) then begin
 try
   Jp1 := TBitmap.Create;
   Jp1.LoadFromStream(Bm1);
   Image1.Picture.Bitmap.Assign(Jp1);
 Except
    on EInvalidGraphic do notJpg := true;
 end;
 Jp1.Free;
 Bm1.Free;
 if notJpg then begin
    Bm1:= TMemoryStream.Create;
    IBQuery1PLAN_KV.SaveToStream(Bm1);
    Bm1.Position := 0;
    Jp2 := TJPEGImage.Create;
    Jp2.LoadFromStream(Bm1);
   try
    Image1.Picture.Bitmap.Assign(Jp2);
   finally
    Bm1.Free;
    Jp2.Free;
   end;
 end;
 end else begin
   Image1.Picture.Assign(nil);
   Bm1.Free;
 end;   //  bm1.size > 0

года два назад делала и все получалось , что не достает - не пойму . Mодуль JPEG включила , может быть не хватает какой-то библиотеки ?
Господа , что неправильно .
Не загружает рисунок в поток :
IBQuery1PLAN_KV.SaveToStream(Bm1);
 Bm1.Position := 0;
 if (Bm1.Size > 0) then begin

Bm1.Size плучается = 0 и выполняется блок

end else begin
   Image1.Picture.Assign(nil);
   Bm1.Free;
 end;   //  bm1.size > 0

Всем спасибо .


 
Плохиш ©   (2006-06-23 18:08) [1]


> Господа , что неправильно .
> Не загружает рисунок в поток :

Для начала надо проверить, а есть ли в этом поле что-нибудь.


 
Desdechado ©   (2006-06-23 18:48) [2]

я обычно делаю чуть наоборот
 oS := qryGraf.CreateBlobStream( qryGraf.FieldByName( "PICT_BLOB" ), bmRead );
 try
   if( oS.Size > 0 ) then begin
     case( cExt[ 1 ] ) of
       "B":
         Image1.Picture.Bitmap.LoadFromStream( oS );
       "I":
         Image1.Picture.Icon.LoadFromStream( oS );
       "J":
         begin
           oJPG := TJPEGImage.Create;
           oJPG.LoadFromStream( oS );
           oJPG.DIBNeeded;
           Image1.Picture.Bitmap.Assign( oJPG );
           oJPG.Free;
         end;
       "E", "W":
         Image1.Picture.Metafile.LoadFromStream( oS );
     end; // case

Поясню - не сохраняю в поток, а считываю из потока. Кроме того, удобнее хранить формат отдельным полем, а не через Exception "догадываться".
Да и двойная попытка сохранения в поток неэффективна.



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

Форум: "Базы";
Текущий архив: 2006.09.03;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.041 c
1-1153397148
dracula
2006-07-20 16:05
2006.09.03
Как узнать - занят файл другим процессом или нет?


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


6-1145531239
Kray
2006-04-20 15:07
2006.09.03
Извлечение результатов поиска Yandex a


15-1155176950
TButton
2006-08-10 06:29
2006.09.03
logout


2-1155219452
ArchValentin
2006-08-10 18:17
2006.09.03
Какую базу выбрать?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский