Форум: "Базы";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];
ВнизГабариты Image Найти похожие ветки
← →
iamkate © (2005-10-13 09:00) [0]Я загружаю из blob-поля в Image картинку вот таким образом:
procedure OpenPage (Sender: TObject);
var buff:ansistring;
lob:tloblocator;
ms:TMemoryStream;
begin
inherited;
if PageControl.ActivePage = tshPhoto Then
begin
With OracleQuery do
begin
DeleteVariables;
DeclareVariable("id",otinteger);
DeclareVariable("photo",otblob);
Sql.Clear;
Sql.Add("Begin K_Read_Photo(:id,:Photo); End;");
SetVariable("id",FKeyFieldValue);
lob:= TLOBLocator.Create(OracleSession,otblob);
SetComplexVariable("photo",lob);
Execute;
lob.SaveToFile("c:\1.bmp");
image.Picture.LoadFromFile("c:\1.bmp");
end;
end;
end;
При этом картинка растягивается по размеру Image и, естественно, получается деформированной.
Подскажите, пожалуйста, как подогнать прпорции Image под размер картинки, чтобы она выводилась в нормальном виде?
И еще, можно ли как-нибудь обойтись без предварительного сохранения картинки в файл, перед загрузкой ее в Image?
← →
ЮЮ © (2005-10-13 09:07) [1]Не сохранять в файл, а - в MemoryStream, откуда загрузить в TBitmap, у которого потом получить Width и Height для расчета размеров TImage
← →
iamkate © (2005-10-13 12:01) [2]У меня была попытка использовать MemoryStream вот таким вот образом:
ms := TMemoryStream.Create;
SetLength(buff, lob.Size);
lob.Read(buff[1],lob.Size);
ms.setSize(length(buff));
ms.Write(buff[1],length(buff));
image.Picture.bitmap.LoadFromStream(ms);
На последнюю строчку ругается.
← →
ЮЮ © (2005-10-14 04:12) [3]>На последнюю строчку ругается.
Я тоже ругаюсь, ибо причен для "ругани" здесь много
1) image.Picture (или image.Picture.bitmap) может быть nil
bmp := TBitmap.Create;
try
bmp.LoadFromStream(ms);
image.Picture.Assign(bmp);
finally
bmp.Free
end;
2) стрим не "перемотан" в начало (ms.Position := 0)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.02 c