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

ЧАстые Вопросы и Ответы

Модераторы: kdv, CyberMax

Ответить
SeGun
Сообщения: 5
Зарегистрирован: 29 ноя 2005, 17:55

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

Сообщение SeGun » 29 ноя 2005, 18:08

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

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 29 ноя 2005, 19:24


Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

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

Сообщение Dimitry Sibiryakov » 05 дек 2005, 09:30

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

Polaris
Сообщения: 3
Зарегистрирован: 03 фев 2005, 06:41

Сообщение Polaris » 02 фев 2006, 10:35

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

sid77
Сообщения: 9
Зарегистрирован: 31 янв 2006, 07:31

Сообщение sid77 » 26 фев 2006, 10:02

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

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

sid77
Сообщения: 9
Зарегистрирован: 31 янв 2006, 07:31

Сообщение sid77 » 26 фев 2006, 11:00

Пробую через поток. Не получается создать переменную типа TFIBBlobStream.

sid77
Сообщения: 9
Зарегистрирован: 31 янв 2006, 07:31

Сообщение sid77 » 26 фев 2006, 11:27

FIBPlus, EhLib

sid77
Сообщения: 9
Зарегистрирован: 31 янв 2006, 07:31

Сообщение sid77 » 26 фев 2006, 13:45

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 работет.

sid77
Сообщения: 9
Зарегистрирован: 31 янв 2006, 07:31

Сообщение sid77 » 26 фев 2006, 14:18

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 разработчиками обещано. Не пробовали?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 26 фев 2006, 15:26

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

sid77
Сообщения: 9
Зарегистрирован: 31 янв 2006, 07:31

Сообщение sid77 » 26 фев 2006, 15:34

Я понимаю. Только не пойму как бы сюда EDBimage приладить. Ведь удобнее же чем все вешать на простой Image

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 26 фев 2006, 15:41

1 минута поиска через яндекс:
http://codecentral.borland.com/Item.aspx?id=17989

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

sid77
Сообщения: 9
Зарегистрирован: 31 янв 2006, 07:31

Сообщение sid77 » 27 фев 2006, 13:59

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

sid77
Сообщения: 9
Зарегистрирован: 31 янв 2006, 07:31

Сообщение sid77 » 28 фев 2006, 10:55

Переустановка компонента JVCL помогла. Все работает, спасибо.

Ответить