DBImage загрузить/обновить картинку из файла

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
SeventhSon
новенький
Сообщения: 56
Зарегистрирован: 17.02.2009 00:57:17

DBImage загрузить/обновить картинку из файла

Сообщение SeventhSon »

Здравствуйте.

Пишу программу/БД с картинками. Крайняя версия Lazarus, Zeos, Postgres.
В БД есть поле photo_blob типа bytea. С помощью sqlmanager загрузил в некоторые блобы картинки,
на перемещении по DBGrid они отображаются.
Не могу загрузить несуществующие/обновить загруженные.
Пробовал как здесь
viewtopic.php?f=5&t=10331&p=86304&hilit=dbimage#p86304

Код: Выделить всё

Pic:=TPicture.Create;
Pic.LoadFromFile(OpenDialog.FileName);
PatentImage.Picture.Assign(Pic);
Pic.Free;

не работает.
Пробовал

Код: Выделить всё

DBImage1.Picture.LoadFromFile(OpenDialog1.FileName);
DBImage1.Change;


Как же загрузить в DBImage блоб картинку?
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

SeventhSon писал(а):Как же загрузить в DBImage блоб картинку?
Грузить надо не в DBImage, а в поле таблицы БД. Через blob stream. Примеры из делфи годятся, в гугле их мильон. А в DBImage автоматом отобразится после refresh.
SeventhSon
новенький
Сообщения: 56
Зарегистрирован: 17.02.2009 00:57:17

Сообщение SeventhSon »

Спасибо, поищу. Но вообще решил что пихать картинки в БД не очень умно,
заменил поле блоб на путь к файлу и по OnClick по DBGrid подгружаю Image1.Picture.LoadFromFile
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

SeventhSon писал(а):Спасибо, поищу. Но вообще решил что пихать картинки в БД не очень умно,

Я когда делал программу по работе с патентами, у нас был запрет на возможную шару для изображений патентов. Так что пришлось их запихивать в БД. Получилась 200 ГБ база, но на скорость выборки повлияло не сильно. Даже подрузка сотни строк из БД с картинками клиентом не занимает больше 5... 10 сек. на 100 МБ сетке.
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

SeventhSon писал(а):Но вообще решил что пихать картинки в БД не очень умно,
Это зависит от задач. У меня на работе в БД прекрасно хранятся и сканы документов, и pdf файлы. Размеры не жмут. Разве что, можно их архивировать перед сохранением, что тоже не проблема, компоненты для архивации общедоступны.
java73
постоялец
Сообщения: 257
Зарегистрирован: 21.11.2013 09:08:10

Сообщение java73 »

Блин, я доже делал (и поддерживаю) корпоративную приложуху с патентами и товарными знаками))) могу поделиться своими способами работы с картинками
wadman
постоялец
Сообщения: 122
Зарегистрирован: 18.10.2016 14:54:28
Контактная информация:

Сообщение wadman »

Vadim писал(а):Даже подрузка сотни строк из БД с картинками клиентом не занимает больше 5... 10 сек. на 100 МБ сетке.

Если сделано по уму, то блобы грузятся только при обращении к ним. То есть это не должно в целом влиять на производительность.
SeventhSon писал(а):заменил поле блоб на путь к файлу и по OnClick по DBGrid подгружаю Image1.Picture.LoadFromFile

Круто... С базой только один человек и локально работает?
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

wadman писал(а):Если сделано по уму, то блобы грузятся только при обращении к ним. То есть это не должно в целом влиять на производительность.
Именно. Во "взрослых" приложениях :D обычно делают небольшую иконку для блоба и только ее и показывают в полях/гридах. А сам блоб грузят только при запросах на детальный просмотр/сохранение копии и печати.
Ответить