Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Image из BLOB поля, как вставить ? 
V
    Опции темы
Lence
  Дата 22.10.2006, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чухарадземадзупэ
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 9.5.2006
Где: Ташкент

Репутация: нет
Всего: 3



Привет всем !!!

у меня в таблице есть поле типа BLOB 
Как мне можно натравить Image1, чтоб он брал из этого поля картинку??? 
Использовать компонет DBImage1 не пойдет так как в базе могут быть картинки не только  *.bmp
Или есть другой способ ? 
--------------------
Шуруп, забитый молотком, крепче сидит чем гвоздь, закрученный отверткой ....  
PM MAIL ICQ Skype   Вверх
Kesh
Дата 22.10.2006, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 3
Всего: 54



Код

Image.Picture.assign(Query.FieldByName('Logo') as TBlobField);


Правда не уверен, что будет работать со всем остальным...

Вот так я извлекаю PNG-шки

Код

procedure TfrmAdditinonalInformation.dbedtSavePhotoClick(Sender: TObject);
var
  PNG: TPNGImage;
begin
  try
    PNG := TPNGImage.Create;
    PNG.Assign((myqryPeopleAdd.FindField('photo') as TBlobField));
    PNG.SaveToFile(myqryPeopleAdd.FindField('id').AsString+'.png');
    MessageBox(0,PAnsiChar('Файл был сохранен под именем '+myqryPeopleAdd.FindField('id').AsString+'.png'),'Фото сохранено',MB_OK or MB_ICONINFORMATION);
  finally
    PNG.Free;
  end;
end;



--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Lence
Дата 23.10.2006, 02:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чухарадземадзупэ
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 9.5.2006
Где: Ташкент

Репутация: нет
Всего: 3



Не совсем то, что нужно. Картинки будут разного формата, не только пнг .... 
МОжно еще сделать так 
Код

var
w: string;
begin
w:=ExtractFilePath(paramstr(0));
form1.Query1Image.SaveToFile(w+'Temp\00001.jpg');
Image1.Picture.LoadFromFile(w+'Temp\00001.jpg');


но не работает ... сохраняет но при загрузки картинки вылетает ошибка

есть ли другой способ загрузки  без сохранения картинки на диск ? 
--------------------
Шуруп, забитый молотком, крепче сидит чем гвоздь, закрученный отверткой ....  
PM MAIL ICQ Skype   Вверх
Kesh
Дата 23.10.2006, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 3
Всего: 54



Lence, а что, Image.Picture.Assign не работает?

Добавлено @ 09:25 
Там все зависит от подключенных модулей... Добавь в uses JPEG и PNGImage...


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Coala
Дата 23.10.2006, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 4.5.2006
Где: Москва

Репутация: нет
Всего: 0



Цитата(Lence @  23.10.2006,  03:39 Найти цитируемый пост)
есть ли другой способ загрузки  без сохранения картинки на диск ?  

Конечно есть - смотри тут. Код  для Билдера, но проблем, я думаю, быть не должно
PM MAIL   Вверх
Lence
Дата 23.10.2006, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чухарадземадзупэ
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 9.5.2006
Где: Ташкент

Репутация: нет
Всего: 3



Kesh, Coala, Спасибо !!!
 
Код

Image2.Picture.Assign(form3.Query1.FindField('image') as TBlobField);


заработало ...
только странно както равботает ...  
некоторые картинки отображает а на некоторых ошибка вылетает - Bitmap image Is Not Valid

в общем отображаются только bmp картинки ... нет смыла тогда использовать такой подход, можно просто воспользоваться DBImage - тот же самый эффект .... 
Нужно чтоб все форматы картинок загружались в Image и отображались (bmp, jpg, gif, png) 



Coala,  переписал твой пример с Билдера ... вроде бы так ...
Код

var
im:TJPEGImage;
stm : TMemoryStream;
begin
stm := TMemoryStream.Create;
im := TJPEGImage.Create;
stm.Clear();
form3.Query1Image.SaveToStream(stm);
stm.Position:= 0;
im.LoadFromStream(stm);
Image2.Picture.Assign(im);
im.Free;
stm.Free;

но теперь вылетает ошибка  JPEG Error #53  если не JPEG  картинка

в общем либо то либо другое получается .... 




Это сообщение отредактировал(а) Lence - 23.10.2006, 20:38
--------------------
Шуруп, забитый молотком, крепче сидит чем гвоздь, закрученный отверткой ....  
PM MAIL ICQ Skype   Вверх
Kesh
Дата 23.10.2006, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 3
Всего: 54



Lence, ну, тебе надо в базе тип файла хранить... И тогда уже через соотвествующий тип обрабатывать (TPNGImage, TJPEGImage)...

Кстати, ты в uses JPEG и PNGImage добавил?


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Lence
Дата 23.10.2006, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чухарадземадзупэ
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 9.5.2006
Где: Ташкент

Репутация: нет
Всего: 3



Цитата(Kesh @  23.10.2006,  22:55 Найти цитируемый пост)
Lence, ну, тебе надо в базе тип файла хранить... И тогда уже через соотвествующий тип обрабатывать (TPNGImage, TJPEGImage)...


каким образом мне отделять типы ??? по расширению загружаемого файла ? 

Цитата(Kesh @  23.10.2006,  22:55 Найти цитируемый пост)
Кстати, ты в uses JPEG и PNGImage добавил? 


Да, это добавил .... 

Я тут подумываю - может мне на jpeg остановиться ?  и не парить себя и других smile 

--------------------
Шуруп, забитый молотком, крепче сидит чем гвоздь, закрученный отверткой ....  
PM MAIL ICQ Skype   Вверх
Kesh
Дата 24.10.2006, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 3
Всего: 54



Lence, я просто заносил в отдельное поле имя файла и ориентировался по расширению...
Как вариант - читать данные и смотреть тип по первым байтам... smile
Возможно, более грамотно, но и более геморно...


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Lence
Дата 24.10.2006, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чухарадземадзупэ
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 9.5.2006
Где: Ташкент

Репутация: нет
Всего: 3



Цитата(Kesh @  24.10.2006,  09:03 Найти цитируемый пост)
Lence, я просто заносил в отдельное поле имя файла и ориентировался по расширению...Как вариант - читать данные и смотреть тип по первым байтам... Возможно, более грамотно, но и более геморно...


я наверно попробую сориентироваться на расширение  smile я подумывал об этом, но наверно так и сделаю ... другово простого варианта я е вижу... чтение первый байт не то .... время поджимает ...


Kesh, спасибо большое за помощь !!!!! 




--------------------
Шуруп, забитый молотком, крепче сидит чем гвоздь, закрученный отверткой ....  
PM MAIL ICQ Skype   Вверх
RA
Дата 24.10.2006, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: нет
Всего: 115



Цитата(Lence @  24.10.2006,  15:02 Найти цитируемый пост)
я наверно попробую сориентироваться на расширение  smile я подумывал об этом, но наверно так и сделаю ... другово простого варианта я е вижу... чтение первый байт не то .... время поджимает ...



Ну не всё так плохо, можно открывать любые картинки не поддерживающиеся приложением

Код


uses axCtrls
    ...
var

  OleGraphic: TOleGraphic;
  stm : TMemoryStream;


//Допустим ты из базы вынул картинку и запихнул её в какойнить MemoryStream, назовём его Stm

    OleGraphic := TOleGraphic.Create;

//Далее передаёшь его в OleGraphic
    OleGraphic.LoadFromStream(  stm );

//Теперь загружаешь в свой контрол
    Image1.Picture.Assign(OleGraphic);

//Не забудь  в конце
    OleGraphic.Free
   Stm.free;






Это сообщение отредактировал(а) RA - 24.10.2006, 16:12
PM   Вверх
Lence
Дата 24.10.2006, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чухарадземадзупэ
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 9.5.2006
Где: Ташкент

Репутация: нет
Всего: 3



RA, хе-хе 

ты серьезно ???? так просто ????  smile 
я обязательно попробую ....   smile 
--------------------
Шуруп, забитый молотком, крепче сидит чем гвоздь, закрученный отверткой ....  
PM MAIL ICQ Skype   Вверх
RA
Дата 24.10.2006, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: нет
Всего: 115



Попробуй, только сразу хочу предупредить картинка будет выводится немного искажённой, но это заметно если уже к ней пристально присматриваться, а так всё нормально хвала модулю OLEPRO32.DLL
PM   Вверх
Lence
Дата 24.10.2006, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чухарадземадзупэ
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 9.5.2006
Где: Ташкент

Репутация: нет
Всего: 3



RA , 

я сделал так 
Код

uses axCtrls
    ...
var
OleGraphic: TOleGraphic;
stm : TMemoryStream;
begin
stm := TMemoryStream.Create;
OleGraphic := TOleGraphic.Create;

Image2.Picture.Graphic := nil;
stm.Clear();
form3.Query1Image.SaveToStream(stm);
stm.Position:= 0;
 OleGraphic.LoadFromStream(  stm );

try
Image2.Picture.Assign(OleGraphic);
except
   end;
    OleGraphic.Free;
   Stm.free;
end;


Вылетает ошибка .... причем помогает только контроль альт делит .... smile 
Что я не так написал ? 

Это сообщение отредактировал(а) Lence - 24.10.2006, 22:26
--------------------
Шуруп, забитый молотком, крепче сидит чем гвоздь, закрученный отверткой ....  
PM MAIL ICQ Skype   Вверх
Kesh
Дата 25.10.2006, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 3
Всего: 54



Lence, скриншот с ошибкой smile


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
RA
Дата 25.10.2006, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: нет
Всего: 115



Код



uses axCtrls
    ...
var
OleGraphic: TOleGraphic;
stm : TMemoryStream;
begin
Try
   try
     stm := TMemoryStream.Create;
     OleGraphic := TOleGraphic.Create;
     form3.Query1Image.SaveToStream(stm);
     stm.Position:= 0;
     OleGraphic.LoadFromStream(  stm );
     Image2.Picture.Assign(OleGraphic);
   finally
     Stm.free;
     OleGraphic.Free;
   end;

except
end;

end;



PM   Вверх
Lence
Дата 25.10.2006, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чухарадземадзупэ
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 9.5.2006
Где: Ташкент

Репутация: нет
Всего: 3



RA, 
теперь все заработало !!!!! BMP и JPEG показывает на ура ....!!!! а вот png не показывает - но хоть ошибка не вылетает ... smile



--------------------
Шуруп, забитый молотком, крепче сидит чем гвоздь, закрученный отверткой ....  
PM MAIL ICQ Skype   Вверх
RA
Дата 25.10.2006, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: нет
Всего: 115



Страно что png не показывается, у меня всё прекрасно показывается и png в том числе.
Может ты как-то png не правильно записываешь или читаешь? проверь png отдельно в контроле для отображения png/
PM   Вверх
Lence
Дата 26.10.2006, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чухарадземадзупэ
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 9.5.2006
Где: Ташкент

Репутация: нет
Всего: 3



Цитата(RA @  25.10.2006,  23:12 Найти цитируемый пост)
Страно что png не показывается, у меня всё прекрасно показывается и png в том числе.Может ты как-то png не правильно записываешь или читаешь? проверь png отдельно в контроле для отображения png/


Скорее всего просто у меня нет поддержки png в image, поэтому и не показывает. 

Думаю bmp и jpg в полне хватит. 

RA, Kesh,  Coala
Огромное спасибо !!!! smile 

Это сообщение отредактировал(а) Lence - 26.10.2006, 18:22
--------------------
Шуруп, забитый молотком, крепче сидит чем гвоздь, закрученный отверткой ....  
PM MAIL ICQ Skype   Вверх
Kesh
Дата 26.10.2006, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 3
Всего: 54



Да не за что... smile


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
belousov
Дата 21.11.2006, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 317
Регистрация: 21.11.2006
Где: Москва

Репутация: нет
Всего: 6



Цитата(Kesh @  22.10.2006,  11:36 Найти цитируемый пост)
PNG.Assign((myqryPeopleAdd.FindField('photo') as TBlobField));


Привет всем! Пишу по вашему коду, тока мелнькая проблемка, на TBlobField выводится ошибка "Undeclared identifier: 'TBlobField". Я ещё не очень опыытный в дельфи, поэтому прошу скажите что делать тут.


--------------------
NIHIL VERUM EST LICET OMNIA 
PM MAIL WWW ICQ Skype   Вверх
Kesh
Дата 22.11.2006, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 3
Всего: 54



TBlobField - это не идентификатор, а класс...

Добавь в uses модуля модуль DB... 


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
belousov
Дата 22.11.2006, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 317
Регистрация: 21.11.2006
Где: Москва

Репутация: нет
Всего: 6



Цитата(Kesh @ 22.11.2006,  18:38)
TBlobField - это не идентификатор, а класс...

Добавь в uses модуля модуль DB...

Большое спасибо, заработало)


--------------------
NIHIL VERUM EST LICET OMNIA 
PM MAIL WWW ICQ Skype   Вверх
Kesh
Дата 23.11.2006, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 3
Всего: 54



Всегда пожалуйста... Обращайтесь, если что...


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
belousov
Дата 28.11.2006, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 317
Регистрация: 21.11.2006
Где: Москва

Репутация: нет
Всего: 6



У меня ещё один вопрос, база в аксесе, картинка добавляется. но с таблицей в которую добавляется картинка связаны ещё две, и когда заполняешь все поля, вылезает ошибка и пишет что связанное поле пустое, хотя оно заполнено


--------------------
NIHIL VERUM EST LICET OMNIA 
PM MAIL WWW ICQ Skype   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0784 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.