Форум: "Базы";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];
ВнизЗапись картинки в DBF - файл Найти похожие ветки
← →
fishka (2006-01-16 11:48) [0]Можно или нет в поле MEMO записать картинку (файл типа BMP, JPG)? Если да, то можно ссылку или пример, пожалуйста.
← →
Johnmen © (2006-01-16 12:02) [1]Типа того
var
FS : TFileStream;
...
FS:=TFileStream.Create("C:\yourfile.bmp",fmOpenRead);
Query1.SQL.Text:="INSERT INTO Table (...,memofield) VALUES (...,:YourParam)";
Query1.ParamByName("YourParam").LoadFromStream(FS,ftMemo);
Query1.ExecSQL;
FS.Free;
← →
fishka (2006-01-16 12:41) [2]Спасибо за ответ.
У меня не получается просмотреть эти картинки.
Честно говоря, записывать, может быть, у меня и получалось (через TMemoryStream).
Но вот просмотреть полученные данные не могу (через DBImage).
Помогите, пожалуйста.
← →
Johnmen © (2006-01-16 13:25) [3]См.через TImage, предварительно загнав туда картинку...
← →
SLP © (2006-01-16 14:44) [4]Я считаю, что корректно записать картинку в DBF невозможно, т.к. типа поля image в DBF нет.
Записала несколько простых рисунков в DBF-файл, повторив Johnmen © (16.01.06 12:02) [1] , только изменив:
LoadFromStream(FS,ftMemo);
на
LoadFromStream(FS,ftTypedBinary);
Если писать как ftMemo, то рисунок вообще не записывается. (попробуйте)
Далее, сделала селект, и отобразила поле МЕМО в DBImage1. Рисунок отобразился, но косой и кривой, хотя был простейший график ( но разобрать можно). Более сложная картинка отображается простым нагромаждением цветных линий и точек...
← →
Johnmen © (2006-01-16 14:51) [5]>SLP © (16.01.06 14:44) [4]
>т.к. типа поля image в DBF нет.
Ну-у-у.. В Парадоксе там, или в IB его тоже нет. Однако картинки пишутся :)
Ну с типизированным чтением из стрима м.б. и так.......
>Если писать как ftMemo, то рисунок вообще не записывается. (попробуйте)
Как проверено?
← →
SLP © (2006-01-16 15:25) [6]Если рисунок пишу как tMemo, то в DBF он записывается.
FS:=TFileStream.Create("D:\rose1.bmp",fmOpenRead);
Q1.SQL.Text:="INSERT INTO im_rose (kod,image_rose) VALUES (5,:YourParam)";
//Q1.ParamByName("YourParam").LoadFromStream(FS,ftTypedBinary);
Q1.ParamByName("YourParam").LoadFromStream(FS,ftMemo);
Q1.ExecSQL;
FS.Free;
НО при отображении в DBImage1, выдается ошибка :
...Stream read error...
Отображение этой же записи в DBMemo1 выглядит так:
BM:||
При записи перепробовала: ftGraphic,ftBlob,ftFmtMemo, результат тот же.
← →
Johnmen © (2006-01-16 15:31) [7]Это потому, что читаешь неправильно.
Попробуй зачитать в TImage.
← →
SLP © (2006-01-16 15:39) [8]А как? Не знаю. Сделала селект, а дальше что?
← →
Johnmen © (2006-01-16 15:50) [9]
MS:=TMemoryStream.Create;
TBlobField(Q1.FieldByName("...")).SaveToStream(MS);
Image.Picture.Bitmap.LoadFromStream(MS);
← →
SLP © (2006-01-16 16:09) [10]Johnmen! Спасибо Вам за ответы.
Image.Picture.Bitmap.LoadFromStream(MS) - так у меня почему-то не получилось... Вообще ничего не отображалось в Image1.
Я сделала так ( топорно...):
TBlobField(Q1.FieldByName("image_rose")).SaveToFile("d:\rose7.bmp");
//Image1.Picture.Bitmap.LoadFromStream(MS);
Image1.Picture.Bitmap.LoadFromFile("d:\rose7.bmp");
Теперь отображается корректный хороший рисунок. Попробовала более сложную картинку - тоже все хорошо отображается. Отсюда вывод - в DBF файле записаны корректные картинки. Но почему же DBImage1 не отображает?
← →
Johnmen © (2006-01-16 16:15) [11]>SLP © (16.01.06 16:09) [10]
Попробуй перед Image1.Picture.Bitmap.LoadFromStream(MS); :MS.Position:=0;
>Но почему же DBImage1 не отображает?
Потому, что он заточен под "чистый" тип BLOB.
А МЕМО им не является...
← →
SLP © (2006-01-16 16:32) [12]MS.Position:=0; Получилось! Но только тогда, когда поставила после
Image1.Picture.Bitmap.LoadFromStream(MS);
Спасибо!
← →
Johnmen © (2006-01-16 23:05) [13]Не за что.
>MS.Position:=0; Получилось! Но только тогда, когда поставила после
>Image1.Picture.Bitmap.LoadFromStream(MS);
Это потому, что повторно используется тот же экземпляр стрима.
Если для каждой закачки картинки в TImage использовать вновь создаваемый, то и указатель в стриме двигать не придётся...
← →
fishka (2006-01-17 09:51) [14]Спасибо Johnmen © и SLP © за ответы и поддержку.
У меня тоже вроде получилось, но немного страшно, потому что не знаю, сколько записей выдержит DBF-файл с картинками. Картинки, вероятнее всего, будут результатом сканирования в черно-белом изображении.
Каков может быть размер dbt-файла?
← →
Anatoly Podgoretsky © (2006-01-17 11:43) [15]2 gb
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.012 c