Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2012.01.29;
Скачать: [xml.tar.bz2];

Вниз

Добавление в БД и извлечение картинки JPG   Найти похожие ветки 

 
Laguna ©   (2011-10-14 11:00) [0]

Поиск по форуму ничего не дал. Ветки с вопросами или закрыты или ссылка в никуда. Поиск по сетке дает кусок переписанного поголовно кода, смысл которго записать картинку в поток с последующей записью в базу, т.к. просьба не пинать. На данном этапе в базу приходится записывать bmp, но хотелось бы уменьшить размер и хранить в ней картинки jpg. Если не затруднит дать нормальный пример или ссылку на такой. Спасибо. Какая база не принципиально, интересует сам алгоритм сохранения и извлечения в Timage. Какой то пример испытывал. Запись в БД проходила нормально, а при извлечении - ошибка.


 
Ega23 ©   (2011-10-14 11:09) [1]

Код показывай, где ошибка.


 
Laguna ©   (2011-10-14 11:16) [2]

Кода нет, стер, т.к. разные варианты пробывал и уже запутался что где брал. Факт что ничто не подходило. Помню, что если зайти в редактирование структуры таблицы и тыкнуть мышом по заполненному полю Bloи, то там где картинк Bmp - показывается в другом окошке, а где сохранена через поток jpg? то выскакмвает окошко, в котором написано "Load image error" или что то в этом роде.


 
stas ©   (2011-10-14 11:45) [3]

Laguna ©   (14.10.11 11:16) [2]
>Кода нет, стер
Пишите по новой)


 
Ega23 ©   (2011-10-14 12:01) [4]


> Кода нет


Ты предлагаешь написать его за тебя?


>  Факт что ничто не подходило.


Ты предлагаешь подыскать что-нибудь подходящее за тебя?


>  или что то в этом роде.


Ты предлагаешь воссоздать ошибку за тебя?


 
Laguna ©   (2011-10-14 12:03) [5]

Записывал в таблицу на основе этого примера

if Picture.Graphic is TJPegImage then
begin
 bs:=TBlobStream.Create(TBlobField(Field),bmWrite);
 Picture.Graphic.SaveToStream(bs);
 bs.Free;
end


 
Laguna ©   (2011-10-14 12:05) [6]

> Ega23

> > Кода нетТы предлагаешь написать его за тебя?


Я не просил писать, я просил ссылку на пример, если кто знает таковой. Или хотя бы алгоритм правильных действий по записи картинки в базу и извлечения.


 
Ega23 ©   (2011-10-14 12:16) [7]


> Или хотя бы алгоритм правильных действий по записи картинки
> в базу и извлечения.


Приводишь всё к одному виду (либо bmp, либо jpg, либо что-то ещё) и записываешь. Либо записываешь как есть, но в отдельном поле помечаешь тип картинки.
Считываешь также.


 
Laguna ©   (2011-10-14 12:20) [8]


> Либо записываешь как есть,

Это как? Через потоки? Через обычное присваивание полю?


 
stas ©   (2011-10-14 14:18) [9]

Laguna ©   (14.10.11 12:20) [8]
через поток загружаешь картинку в блоб поле, а тип присваиваешь обычно.


 
Laguna ©   (2011-10-14 14:37) [10]

если я создаю Blob-поток и ассоциируе его с конкретным полем таблицы, то почему не происходит записи картинки ?

Var
 bs : TBlobStream;
begin
 bs := TBlobStream.Create(Table1Foto1, bmWrite);
 Image1.Picture.Graphic.SaveToStream(bs);

или нужно делать так?

Var
 bs : TBlobStream;
begin
 bs := TBlobStream.Create(Table1Foto1, bmWrite);
 Image1.Picture.Graphic.SaveToStream(bs);
 Table1.Insert;
  Table1Foto1.LoadFromStream(bs);
 Table1.Post;
 bs.Free;


 
stas ©   (2011-10-14 14:46) [11]

По поводу TBlobStream не знаю, вот так через MemoryStream
Var
bs : TMemoryStream;
begin
bs := TMemoryStream.Create();
Image1.Picture.Graphic.SaveToStream(bs);
Table1.Insert;
 Bs.position:=0;
 Table1Foto1.LoadFromStream(bs);
Table1.Post;
bs.Free;


 
Laguna ©   (2011-10-14 16:26) [12]

> stas ©

Видать я такой способ уже применял. Т.к. отработал криво, поэтому его и стер. Да,  через MemoryStream нечто в базу записывается, но сами смотрите.
http://s011.radikal.ru/i316/1110/a4/3a6d91c0d961.jpg
Я уже писал, что если по полю Blob в базе тыкнуть мышом, то должна показаться картинка в окошке, а здесь какая то несуразица и при загрузке выдает ошибку.

ps
еще из наблюдений. Если поле блоб не содержит данных, то "Blob" написано так, а если есть, то "BLOB" так.


 
Laguna ©   (2011-10-14 20:16) [13]

Все, разобрался. Сделал через MemoryStream. C BlobStream так и не заработало.


 
Jeer ©   (2011-10-14 21:43) [14]

Где-то примерно так:

M: TStream;
jpg: TJPEGImage;
qu: T*Dataset;

//
jpg := TJPEGImage.Create;

jpg.Performance := jpBestQuality;
jpg.Scale := jsFullSize;
qu.Open;
M := qu.CreateBlobStream(vFieldName, bmRead);
jpg.LoadFromStream(M);

...
ну и там всякие try, free...


 
DVM ©   (2011-10-15 00:23) [15]

Запись

AdoCmd.Parameters.ParamByName("Field").LoadFromFile(PictureFile, ftVarBytes);

Чтение

Stream := DataSet.CreateBlobStream(DataSet.FieldByName(Field), bmRead);


 
Laguna ©   (2011-10-15 00:57) [16]

А есть принципиальное отличие в использовании BlobStream и MemorySream ?


 
Laguna ©   (2011-10-16 00:19) [17]

Казалось вопрос уже можно было закрыть. Найден метод загрузки картинки jpg или bmp в Blob-поле и извлечение его обратно в Timage. Однако проявилась следующая проблема. На форме лежат DBImage, которые связаны с Blob-полем. Когда в базе была картинка bmp - все было нормально. Стоило сохранить jpg, то при загрузке формы сразу же вылетает ошибка. Как поступить в данной ситуации? Убирать вообще DBImage, вместо их ставить Timage  и банально в момент открытия таблицы загружать в них картинки? Не совсем удобно...


 
Jeer ©   (2011-10-16 00:25) [18]


> Не совсем удобно..


Удобно бывает только в собственноручно обустроенном туалете, да и то - пока не увидишь кем-то более обустроенный вариант. (С)


 
Витлий Панасенко   (2011-10-20 14:46) [19]


> Стоило сохранить jpg,

ты хоть бы хелп почитал.. модуль нужный подключи.. или используй JEDI - халявные компоненты


 
Laguna ©   (2011-10-20 23:59) [20]


> ты хоть бы хелп почитал..

При чем тут модуль?!? Речь о том, что DBImage не связывается с jpg


 
Inovet ©   (2011-10-21 00:08) [21]

> [20] Laguna ©   (20.10.11 23:59)
> > ты хоть бы хелп почитал..
>
> При чем тут модуль?!? Речь о том, что DBImage не связывается с jpg

The property value is a TPicture object which can contain an icon, metafile, bitmap, or other graphic object


 
Laguna ©   (2011-10-22 21:58) [22]


> The property value is a TPicture object which can contain
> an icon, metafile, bitmap, or other graphic object


О каком свойстве идет речь?


 
Inovet ©   (2011-10-22 23:35) [23]

> [22] Laguna ©   (22.10.11 21:58)
> > The property value is a TPicture object which can contain
> > an icon, metafile, bitmap, or other graphic object
>
> О каком свойстве идет речь?

Представь себе, о Picture.


 
Laguna ©   (2011-10-23 00:03) [24]

> Inovet

Ты вобще в курсе, что речь идет о DBImage а не TImage?


 
Inovet ©   (2011-10-23 00:13) [25]

> [24] Laguna ©   (23.10.11 00:03)
> Ты вобще в курсе, что речь идет о DBImage а не TImage?

А ты вообще хелп-то открывал?
DBCtrls.TDBImage.Picture


 
Laguna ©   (2011-10-23 00:17) [26]

Если честно, то по хэлпу не смотрел, смотрел по коду при отладке. Заметил, что DBImage использует потоки, только обработка типа картинки вроде ка не определяется, что именно jpg. Я нашел способ загрузки из блоб поля на в Timage. Вся обработка и загрузка происходит как то с притормаживанием, это напрягает.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2012.01.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.003 c
1-1282292479
TComponent
2010-08-20 12:21
2012.01.29
Компонент для сетевой структуры


2-1318634868
Romancaw
2011-10-15 03:27
2012.01.29
Как при помощи Sendinput отправить текст из tEdit?


15-1318502205
PreDatoR
2011-10-13 14:36
2012.01.29
Проблема с классом.


4-1253608495
QAZ
2009-09-22 12:34
2012.01.29
Меню


15-1318451402
Юрий
2011-10-13 00:30
2012.01.29
С днем рождения ! 13 октября 2011 четверг





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