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

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

Мастера... помогите..... как поместить картинку в базу данных [D5, D6, Oracle]


lexx@demon ©   (2002-05-15 19:45:00) 

Я использую PARADOX... Я уже не знаю,.. что делать тот код что у меня есть не работает...


esVer   (2002-05-16 15:27:00) [1]

Или конвертировать всё в Jpeg (или иное).

Спасибо.


Lusha   (2002-05-16 14:56:00) [2]

>esVer (16.05.02 14:11)
Решение влоб - хранить тип записанного изображения в таблице...


esVer   (2002-05-16 14:11:00) [3]

Приношу всем извинения. Я тормоз, блин.
Поле было типа LONG, а должно быть LONG RAW.
В первый раз работаю с графикой и в тестовой
табличке сделал ошибку при создании.

Bitmap теперь пишется и читается нормально.
Всё остальное (wmf, jpg и т.д.) - нет.
Та же самая ругань.
В файл сохраняется всё нормально, но как определить, что находится в поле? TDBImage на записанный wmf говорит
"Bitmap image is not valid"
...


Lusha   (2002-05-16 13:39:00) [4]

Запишите картинку посредством TDBImage... Если она после этого считается, то будем смотреть, что не так с занесением оной посредством запроса... ОК?


Reindeer Moss Eater   (2002-05-16 13:35:00) [5]

Может тогда твоя картинка это не *.BMP ?


esVer   (2002-05-16 13:31:00) [6]

Для Lusha:
вероятно, но из всех перепробованных способов записи,
сработал только тот, что привел здесь Айвенго.

Для Reindeer Moss Eater:
я писал не через stream, а так как написано в первом ответе
на исходный вопрос. (см. начало страницы)


Reindeer Moss Eater   (2002-05-16 13:16:00) [7]

Если пишешь через stream, то что у тебя раньше делается, освобождение потока или Post?


Lusha   (2002-05-16 13:10:00) [8]

>esVer (16.05.02 13:07)
Смею предположить, что Вы неправильно ее (картинку) пишете в БД... Третьего, похоже, не дано...


esVer   (2002-05-16 13:07:00) [9]

Для Lusha:
852 байта, размер содержимого в базе в два раза больше, при сохранении содержимого в файл явно наблюдаются шестнадцатеричные
цифры. Как из этого содержимого добыть bitmap - не знаю...


Lusha   (2002-05-16 12:52:00) [10]

>esVer (16.05.02 12:31)
Приведенный Вами код рабочий... Так что читаете Вы правильно...

Насколько велик размер картинки занесенный Вами в BLOB поле?


esVer   (2002-05-16 12:31:00) [11]

Для Lusha: Однако, ознакомился, но то с чем знакомился не очень помогло. Записал Bitmap в таблицу Oracle и пытаюсь прочитать его:

var
bs : TBlobStream;
begin
bs:=TBlobStream.Create(
TBlobField(Query1.FieldByName("PICT")),bmRead);
bs.Position:=0;
if bs.Size>0 then
image1.Picture.Bitmap.LoadFromStream(bs);
bs.Free;
end;

получаю "Bitmap image is not valid"

если пишу

image1.Picture.Graphic.LoadFromStream(bs)

то получаю "Access violation ..."


Lusha   (2002-05-16 12:12:00) [12]

>esVer (16.05.02 11:55)
Смотрите методы TBlobField и познакомьтесь с TBlobStream...


esVer   (2002-05-16 11:55:00) [13]

Для Айвенго:
Запись это здорово... Только пишется в hex...
А прочитать?


Desdechado   (2002-05-15 19:59:00) [14]

Query1.Sql.Text :=
"INSERT INTO testblob " +
" ( " +
" fBlob" +
" )" +
" VALUES" +
" (" +
" :ParamBlobField" +
")";
Query1.ParamByName("ParamBlobField").DataType := ftBlob;
Query1.ParamByName("ParamBlobField").ParamType := ptInput;
Query1.ParamByName("ParamBlobField").LoadFromFile("MyFile",ftBlob);
Query1.ExecSql;


Наверх

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