Главная страница
    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.042 c
2-1140968384
DesertAlex
2006-02-26 18:39
2006.03.12
HTML-код в переменную


15-1140376426
Guest117
2006-02-19 22:13
2006.03.12
Где можно скачать хороший учебник по Java


2-1140867234
oleguslu
2006-02-25 14:33
2006.03.12
Инкриментирование


2-1140524133
dera
2006-02-21 15:15
2006.03.12
Подскажите, как создать интерактивную карту?


15-1140181761
Mirror
2006-02-17 16:09
2006.03.12
Jpeg2000





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский