Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.58/40: Рейтинг темы: голосов - 40, средняя оценка - 4.58
1 / 1 / 0
Регистрация: 15.04.2013
Сообщений: 42

Считать из blob поля в Image1

06.01.2014, 18:55. Показов 7825. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер. Подскажите код, который бы считавал из базы дынных access, поля Image типа blob в компонент sImage1
Delphi
1
sImage1.Picture.LoadFromClipboardFormat:=ADOQuery1.FieldbyName('Image').AsTPicture;
Таким образом не получается.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.01.2014, 18:55
Ответы с готовыми решениями:

Считать содержимое BLOB поля из базы данных SQlite, используя API функций С/С++
Добрый день, необходимо корректно считать содержимое BLOB поля в программу и как-то удостовериться, что содержимое поля считано правильно. ...

Как сделать, чтобы от сервера передавалась картинка из Image1 на Клиент в Image1?
Здравствуйте! как сделать чтобы от сервера передавалась картинка из Image1 на Клиент в Image1 :help: дело в том если сохраняю файл и...

При нажатии на image1 нужно чтобы загружаемая картинка встала поверх image1
При нажатии на image1 нужно чтобы загружаемая картинка встала поверх image1. При чем чтобы положение картинки было по середине и сверху...

15
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
06.01.2014, 20:49
Цитата Сообщение от Salpson Посмотреть сообщение
Таким образом не получается
Конечно не получится.
Хотя бы потому что:
1. LoadFromClipboardFormat - это метод, а не свойство.
2. Метод LoadFromClipboardFormat предназначен для загрузки из буфера обмена Windows, а не из блоб-поля набора данных.

см. CreateBlobStream, LoadFromStream
0
1 / 1 / 0
Регистрация: 15.04.2013
Сообщений: 42
06.01.2014, 23:51  [ТС]
На примере можите показать? Заранее спасибо.
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
07.01.2014, 07:38
В Аесессе нет полей типа "blob". Есть "Поле объекта OLE".
Для чтения из поля этого типа, и в котором записана картинка (в Аксессе в этом поле должно быть видны слова "Двоичные данные"), нужно применять DBImage.
В его свойстве DataField указать имя поля из таблицы БД, где находится изображение, в свойстве DataSource указывается тот компонент, который соединен с DBGrid.
Этого достаточно, чтобы при перемещении указателя в DBGrid в DBImage картинка менялась.
1
1 / 1 / 0
Регистрация: 15.04.2013
Сообщений: 42
15.01.2014, 23:45  [ТС]
Народ, дайте пожалуйста пример кода как считать картинку из OLE поля в Image1. Ничего не выходит. =\
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
16.01.2014, 00:00
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure -----------
var
   bs : TADOBlobStream;
begin
  if ADOQuery1['image'] = NULL then Exit;
  bs := TADOBlobStream.Create(TBlobField(ADOQuery1.FieldByName('image')), bmRead);
  try
    Image1.Picture.Bitmap.LoadFromStream(bs);
  finally
    bs.Free;
  end;
end;
2
1 / 1 / 0
Регистрация: 15.04.2013
Сообщений: 42
17.01.2014, 19:00  [ТС]
Скандербег, выдает ошибку: Bitmap Image is not valid.
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
17.01.2014, 19:35
Ошибка эта появляется тогда, когда в этом поле записано все что угодно, но не bitmap.
Если посмотреть в среде Аксесса на это поле, то в нем должно быть слова "Двоичные данные".
Если не так, то это не картинка, если эти слова все же есть, то значит изображение не формата bitmap.
0
1 / 1 / 0
Регистрация: 15.04.2013
Сообщений: 42
17.01.2014, 19:43  [ТС]
Скандербег, Я не пойму что за формат bitmap, я думал там простые картинки .bmp .jpg или их как то можно по иному туда загружать? У меня там появляется надпись bitmap Image. Двоичных данных нету.
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
17.01.2014, 19:59
файлы с расширением .bmp - это и есть bitmap.
Какая версия Аксесса?
Можете выложить здесь эту базу?
0
1 / 1 / 0
Регистрация: 15.04.2013
Сообщений: 42
17.01.2014, 20:12  [ТС]
Скандербег, 2003 года.
Вложения
Тип файла: rar BD_Access.rar (887.3 Кб, 59 просмотров)
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
17.01.2014, 20:50
В поле OLE должны быть написано: "Двоичные данные", а не "Точечный рисунок" (или что либо иное).

Записывать нужно картинки в формате bitmap (файлы *.bmp), потому что с ними проще работать.
Показанная ниже запись изображений bmp в представленную базу происходт нормально.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm1.Button1Click(Sender: TObject);
var
   bs : TADOBlobStream;
begin
  if OpenPictureDialog1.Execute then begin
    Image1.Picture.Bitmap.LoadFromFile(OpenPictureDialog1.FileName);
    ADOQuery1.Edit;
     bs := TADOBlobStream.Create(TBlobField(ADOQuery1.FieldByName('image')), bmReadWrite);
     try
        Image1.Picture.Bitmap.SaveToStream(bs);
     finally
        bs.Free;
     end;
    ADOQuery1.Post;
  end;
end;
Что там за "Точечный рисунок" - непонятно. Может быть картинка в формате jpeg,
но в Дельфи для работы с этим форматом нужны несколько иные телодвижения.
1
1 / 1 / 0
Регистрация: 15.04.2013
Сообщений: 42
17.01.2014, 21:21  [ТС]
Скандербег, Все работает, большое спасибо. Все же было бы здорово, если помимо bmp подгружало еще jpg and pgn форматы ))
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
17.01.2014, 21:35
Да, здорово. Но сразу возникают проблемы.
Если записать разные форматы не сложно (хотя, в Дельфи записываются они несколько по-разному),
то при чтении нужно понять какой формат читается в данный момент.
Разумеется, это не проблема - решается, но для простоты в учебной работе лучше остановиться на простом формате.
0
1 / 1 / 0
Регистрация: 15.04.2013
Сообщений: 42
17.01.2014, 21:44  [ТС]
Скандербег, Мне этот код нужен для диплома, поэтому точно сказать немогу потребуют ли они возможность загрузки jpg формата или нет. )
0
0 / 0 / 0
Регистрация: 18.08.2016
Сообщений: 32
19.09.2016, 07:03
Цитата Сообщение от Скандербег Посмотреть сообщение
Может быть картинка в формате jpeg,
но в Дельфи для работы с этим форматом нужны несколько иные телодвижения.
Можно намёк или ссылку на эти телодвижения?\
Так как хранить bmp в бд не очень-то практично с точки зрения пространства на HDD.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.09.2016, 07:03
Помогаю со студенческими работами здесь

Считать данные из BLOB-XML - PHP БД
Здравствуйте. Есть поле в базе данные типа BLOB. В нем храниться XML текст, такой : <test> <results...

BLOB поля в SQLite
Уважаемые... Уже несколько дней не могу победить SQLite 2.1 - как все-таки из нее извлечь BLOB поля? Проблем с подключением к базе не...

Из BLOB-поля в TDBImage
Всем привет, подскажите, что делаю не так?

Blob-поля в ADOTable
Всем желаю здравствовать. Посоветуйте пожалуйста как решить одну проблему. В общем база у меня аксесовская, пишу приложение на Delphi...

BLOB поля в Interbase?
Вот я добавил фотографию в BLOB поле таким способом procedure TForm1.Button1Click(Sender: TObject); var jpeg: TJPEGImage; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru