Форум: "Начинающим";
Текущий архив: 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