Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Про отображение BLOB типа jpeg в DBImage [D6]


Курдль ©   (2005-07-11 11:09:00) 

Добрый!
Не хотелось беспокоить по пустякам, но поиск по ФАКу что-то не отработал.
Напомните, плз, как отобразить изображение типа jpeg, упакованное в BLOB-поле БД показать в DBImage?


Ega23   (2005-07-12 10:46:00) [1]

Другой вариант - конвертить в bmp и рисовать уже bmp прямо на Canvas.


Курдль   (2005-07-12 10:41:00) [2]

Т.е. только с использованием временного файла?
Не, так не пойдет...
Пороюсь в своих старых проектах. Там где-то была усиленная работа BLOВ-полей с OLEContainer-ом...


Ega23   (2005-07-12 10:28:00) [3]

Моя делфя не умеет .".Picture.LoadFromStream(ms)"  :(

см.[8]


Курдль   (2005-07-12 10:27:00) [4]

Моя делфя не умеет .".Picture.LoadFromStream(ms)"  :(


Ega23   (2005-07-12 09:46:00) [5]

Наврал. SaveToFile/LoadFromFile


Ega23   (2005-07-12 09:45:00) [6]


А вот нефига не выходит у меня каменный цветок! :)
Хотелось бы вотт это место подробнее: "/// Грузим туда, куда надо"

И как, напр. из Вашего jpg выгрузить в, например, Image1?


Вот работающий пример:

ss:='select PersFaceImg,FaceDat from persadd where persid='+PersID;
quOpen(DMpas.RQTemp,ss);
Fld:=TBlobField(DMpas.RQTemp.FieldByName('PersFaceImg'));
if not fld.IsNull then
 begin
  ms:=TMemoryStream.Create;
  fld.SaveToStream(ms);
  PersImage.Picture.LoadFromStream(ms);
  ms.Free;
  lPersFaceDat.Caption:=FormatDateTime('dd/mm/yyyy',DMpas.RQTemp.FieldByName('FaceDat').AsDateTime);
 end
else
 begin
  PersImage.Picture.LoadFromFile(fnBlank);


Курдль   (2005-07-11 22:02:00) [7]

А вот нефига не выходит у меня каменный цветок! :)
Хотелось бы вотт это место подробнее: "/// Грузим туда, куда надо"

И как, напр. из Вашего jpg выгрузить в, например, Image1?


Курдль   (2005-07-11 11:57:00) [8]

//Почему? uses JPEG пропиши, я думаю заработает.

Нет. Не зарабатывает - я бы так просто не сдался :)


Ega23   (2005-07-11 11:55:00) [9]

Виноват. JPEG действительно не хочет просто так грузить. Тогда либо калькулироемое поле делай и в него конверти из Jpeg в Bmp, либо - см. [1].
Лично я никогда DBImage не использовал - всегда сам конвертил в тот формат, в какой надо.


Ega23   (2005-07-11 11:48:00) [10]

А TJPEGImage визуальный компонент?

Нет, это просто класс.

Значицца, как я понял, никакими шаманствами стандартный DBImage не заставить прибиндиться к полю, содержащему JPEG...

Почему? uses JPEG пропиши, я думаю заработает.


Курдль   (2005-07-11 11:41:00) [11]

Спасибо!
А TJPEGImage визуальный компонент?

Значицца, как я понял, никакими шаманствами стандартный DBImage не заставить прибиндиться к полю, содержащему JPEG...


Ega23   (2005-07-11 11:23:00) [12]

uses JPEG

function LoadImage(DS:TDataSet; ImageFieldName:String):Boolean;
var
ms:TMemoryStream;
jpg:TJPEGImage;
begin
Result:=False;
try
  if (not DS.Active) or (DS.FieldByName(ImageFieldName).IsEmpty) then Exit;
  ms:=TMemoryStream.Create;
  jpg:=TJPEGImage.Create;
  /// Грузим туда, куда надо
 try
  TBLOBField(DS.FieldByName(ImageFieldName)).SaveToStream(ms);
  jpg.LoadFromStream;
   
  Result:=True;
 finally
  ms.Free;
  jpg.Free;
 end;  

except
 Result:=False;
end;

end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо