![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Загрузка в Image1 рисунка из BLOB поля [D6, FB]
VALUA © (2006-06-23 17:59:00)Господа есть поле 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
Всем спасибо .
Desdechado (2006-06-23 18:48:00) [1]я обычно делаю чуть наоборот
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 "догадываться".
Да и двойная попытка сохранения в поток неэффективна.
Плохиш (2006-06-23 18:08:00) [2]
> Господа , что неправильно .
> Не загружает рисунок в поток :
Для начала надо проверить, а есть ли в этом поле что-нибудь.