Главная страница
    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.04 c
15-1154964408
homm
2006-08-07 19:26
2006.09.03
Мягкие игрушки


2-1155242845
Ryan_12
2006-08-11 00:47
2006.09.03
как развить алгоритм


15-1155060007
зеркальщик
2006-08-08 22:00
2006.09.03
The command you selected is not available


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


15-1155203084
DmitryS
2006-08-10 13:44
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский