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

Вниз

Загрузка в 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;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.034 c
15-1155209649
Сергей М.
2006-08-10 15:34
2006.09.03
FreeReport, zoom-функциональность


4-1146765278
Colonel
2006-05-04 21:54
2006.09.03
Активизация окна


2-1155716551
California
2006-08-16 12:22
2006.09.03
Volga


6-1144955552
qazwsx
2006-04-13 23:12
2006.09.03
base64_encode(pack("H*", sha1(utf8_encode($_GET[ pwd ])))))


15-1155063322
Ketmar
2006-08-08 22:55
2006.09.03
delphi2006 -- чего нового по сравнению с d7.





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