Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.48 MB
Время: 0.012 c
15-1139927103
oldman
2006-02-14 17:25
2006.03.12
Напишет же "Версия" такое...


2-1140535345
Wel
2006-02-21 18:22
2006.03.12
Массив Image в один файл


8-1127796882
OlegM
2005-09-27 08:54
2006.03.12
Воспроизвести AVI файл без MediaPlayer, как?


2-1140965267
WestBronx
2006-02-26 17:47
2006.03.12
Папка "Автозаргузка" и данные из ярлыка.


15-1140060498
КаПиБаРа
2006-02-16 06:28
2006.03.12
Ссылки в форуме





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский