![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Мастера... помогите..... как поместить картинку в базу данных [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;