Страница 1 из 1

Подскажите как положить *.jpg в базу firebird

Добавлено: 29 ноя 2005, 18:08
SeGun
Подскажите как положить *.jpg в базу firebird?
Компонент DBImage не хочет его принимать, хотя компонент Image, не имеет ничего против. Заранее благодарен за небольшой пример.

Добавлено: 29 ноя 2005, 19:24
kdv

Re: Подскажите как положить *.jpg в базу firebird

Добавлено: 05 дек 2005, 09:30
Dimitry Sibiryakov
SeGun писал(а): Подскажите как положить *.jpg в базу firebird?
Компонент DBImage не хочет его принимать, хотя компонент Image, не имеет ничего против. Заранее благодарен за небольшой пример.
Твоя проблема не в том чтобы положить жипег в базу, это делается тривиально по ссылке, данной Дмитрием. Проблема в том как сказать TDBImage что в базе лежит именно жипег. Теоретически для этого служит небольшой заголовок, присобачиваемый в изображению, но на момент Delphi5 оно работало только с битмапами.
Лично я отображаю содержимое блоба в простом TImage.

Добавлено: 02 фев 2006, 10:35
Polaris
Если еще не поздно насчет компонентов, то
еще есть отдельный компонент EDBImage.
Этот компонент работает и с jpg.
http://www.programmersheaven.com/UserUp ... /23135.zip
Или вот еще ссылка но более новую версию:
http://www.torry.net/db/visible/db_images/EDBImg16.zip

Добавлено: 26 фев 2006, 10:02
sid77
Хотелось бы вернуть тему к обсуждению.
Пытаюсь положить jpeg в FireBird. Операция проходит успешно, но почему-то в базе лежит уже в bmp. Подскажите почему почему пожалуйста.

jpg:=TJpegImage.Create;
jpg.LoadFromFile(OpenPictureDialog1.FileName);
jpg.CompressionQuality:=30;
jpg.Compress;
DBImage1.Picture.Graphic.Assign(jpg);

Добавлено: 26 фев 2006, 11:00
sid77
Пробую через поток. Не получается создать переменную типа TFIBBlobStream.

Добавлено: 26 фев 2006, 11:27
sid77
FIBPlus, EhLib

Добавлено: 26 фев 2006, 13:45
sid77
PictStream := TMemoryStream.Create;
jpg1:=TJpegImage.Create;
jpg1.Assign(FrameData.Bitmap);
jpg1.CompressionQuality:=30;
jpg1.Compress;
jpg1.SaveToStream(PictStream);
TBlobField(FIBDataset.FieldByName('BLOB')).LoadFromStream(PictStream);

На основе хэлпа тоже не выходит.
Попробовал EDBImage-он тоже только с bitmap работет.

Добавлено: 26 фев 2006, 14:18
sid77
jpg.SaveToStream(PictStream);
FIBQuery.SQL.Text:='insert into table (blob_f) values (:blob_p)';
FIBQuery.ParamByName('blob_p').LoadFromStream(pictstream);
FIBQuery.ExecQuery;
pictstream.Free;

Таким образом получилось впихнуть jpg. Только вот просмотр ни DBImage, ни EDBImage не осиливают. Я понимаю DBImage, но EDBImage разработчиками обещано. Не пробовали?

Добавлено: 26 фев 2006, 15:26
kdv
обращаю внимание, что проблема связана с компонентами, визуализирующими конкретный формат. И не имеет отношения ни к IB/FB, ни к компонентам доступа (IBX/FIBPlus).

Добавлено: 26 фев 2006, 15:34
sid77
Я понимаю. Только не пойму как бы сюда EDBimage приладить. Ведь удобнее же чем все вешать на простой Image

Добавлено: 26 фев 2006, 15:41
kdv
1 минута поиска через яндекс:
http://codecentral.borland.com/Item.aspx?id=17989

по EDBImage - не знаю. к автору на сайт надо обращаться.

Добавлено: 27 фев 2006, 13:59
sid77
Скачал JVCL, но с установкой такой проблем. Автоматом не получилось. Поставил вручную. Во вкладке DataControl появились компоненты, в том числе и новый DBImage. Перезапустил Delphi - все пропало. Вижу их в Palette Properties но на панель перенести не могу.

Добавлено: 28 фев 2006, 10:55
sid77
Переустановка компонента JVCL помогла. Все работает, спасибо.