Вниз
Скачать: CL | DM;

Сохранение изображения в базе Access   Найти похожие ветки 

← →
Lex_! ©   (2005-05-09 08:23) [0]

+ чтение изображения из файла и показ на форме.
Никто примерчик не подкинет?...


← →
aus   (2005-05-09 08:42) [1]

http://delphimaster.net/view/3-1115511543/


← →
Lex_! ©   (2005-05-09 09:03) [2]

Ms SQL Server это я бы сказал не Access и вроде как принцип немнога не такой должен быть?...


← →
aus   (2005-05-09 12:06) [3]

Lex_! ©   (09.05.05 9:03) [2]
вроде как принцип

Как раз принцип одинаков для любой БД.


← →
Lex_! ©   (2005-05-10 07:12) [4]

Но какой там должен быть тип у поля чтобы туда сохранить картинку??....

И еще всетки как его потом оттуда прочитать то?....


← →
Lex_! ©   (2005-05-10 07:13) [5]

Всмысле на форме показать ... из базы..


← →
sniknik ©   (2005-05-10 12:01) [6]

> Но какой там должен быть тип у поля чтобы туда сохранить картинку?
в самом аксессе в конструкторе это "поле OLE обьекта"
если же поле делать запросом (к примеру из дельфи-ado-jet, или тогоже аксесса) то тип OLEOBJECT или синоним один из - LONGBINARY, GENERAL или IMAGE.


← →
Mr.F   (2005-05-10 14:43) [7]

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


← →
Lex_! ©   (2005-05-11 04:01) [8]

Картинки в базе хранить нужно а не путь к картинке.
Спасибо всем. :)


← →
AlexTregubov   (2005-05-12 09:30) [9]

Из БД:

   //Вывод фото
   try
     Bitmap:=TBitmap.Create;
     BS:=CreateBlobStream(FieldByName("Foto"), bmRead);
     if BS.Size>82 then begin
       BS.Seek(82, soFromBeginning);
       Bitmap.LoadFromStream(BS);
       imgFoto.Picture.Assign(Bitmap);
     end else imgFoto.Picture:=nil;
   finally
     Bitmap.Free;
     BS.Free;
   end;

Здесь 82 байта служебной информации - чтобы картинки можно было смотреть и через Access
В базу:

//Сохранение картинки в БД
procedure TfrmImageImport.spbSaveClick(Sender: TObject);
const
 //Сигнатура точечного рисунка для вставки через OLE
 //В начале
 sgntB=#21#28#51#0#2#0#0#0#17#0#14#0#20#0#37#0#255#255#255#255#210#238#247#229+
       #247#237#251#233#32#240#232#241#243#237#238#234#0#80#97#105#110#116#46#80+
       #105#99#116#117#114#101#0#1#5#0#0#2#0#0#0#7#0#0#0#80#66#114#117#115#104+
       #0#0#0#0#0#0#0#0#0#64#245#0#0;
 //В конце
 sgntE=#0#0#0#0#0#0#0#0#0#0#1#5#0#0#0#0#0#0#192#173#5#154;
var
 str: string;
 bmpSave: TBitmap;
 BS: TStream;
begin
 with Data.QueryMain do begin
   str:="Добавить изображние к записи о ""#13+
        FieldByName("Fam").AsString+" "+
        FieldByName("Imy").AsString+" "+
        FieldByName("Otchest").AsString+"" ?";
   if MessageBox(Handle, @str[1],"Внимание!", MB_YESNO or MB_ICONWARNING) = IDYES then begin
     Edit;
     try
       bmpSave:=TBitmap.Create;
       bmpSave.Width:=wR; bmpSave.Height:=hR; bmpSave.PixelFormat:=pf24bit;
       bmpSave.Canvas.CopyRect(Rect(0,0,wR,hR),bmp.Canvas,Ramka);
       BS:=CreateBlobStream(FieldByName("Foto"), bmWrite);
       BS.Write(sgntB,82);
       bmpSave.SaveToStream(BS);
       BS.Write(sgntE,22);
     finally
       bmpSave.Free;
       BS.Free;
     end;
     Post;      
   end;
 end;
end;


← →
AlexTregubov   (2005-05-12 09:31) [10]

Из БД:

   //Вывод фото
   try
     Bitmap:=TBitmap.Create;
     BS:=CreateBlobStream(FieldByName("Foto"), bmRead);
     if BS.Size>82 then begin
       BS.Seek(82, soFromBeginning);
       Bitmap.LoadFromStream(BS);
       imgFoto.Picture.Assign(Bitmap);
     end else imgFoto.Picture:=nil;
   finally
     Bitmap.Free;
     BS.Free;
   end;

Здесь 82 байта служебной информации - чтобы картинки можно было смотреть и через Access
В базу:

//Сохранение картинки в БД
procedure TfrmImageImport.spbSaveClick(Sender: TObject);
const
 //Сигнатура точечного рисунка для вставки через OLE
 //В начале
 sgntB=#21#28#51#0#2#0#0#0#17#0#14#0#20#0#37#0#255#255#255#255#210#238#247#229+
       #247#237#251#233#32#240#232#241#243#237#238#234#0#80#97#105#110#116#46#80+
       #105#99#116#117#114#101#0#1#5#0#0#2#0#0#0#7#0#0#0#80#66#114#117#115#104+
       #0#0#0#0#0#0#0#0#0#64#245#0#0;
 //В конце
 sgntE=#0#0#0#0#0#0#0#0#0#0#1#5#0#0#0#0#0#0#192#173#5#154;
var
 str: string;
 bmpSave: TBitmap;
 BS: TStream;
begin
 with Data.QueryMain do begin
   str:="Добавить изображние к записи о ""#13+
        FieldByName("Fam").AsString+" "+
        FieldByName("Imy").AsString+" "+
        FieldByName("Otchest").AsString+"" ?";
   if MessageBox(Handle, @str[1],"Внимание!", MB_YESNO or MB_ICONWARNING) = IDYES then begin
     Edit;
     try
       bmpSave:=TBitmap.Create;
       bmpSave.Width:=wR; bmpSave.Height:=hR; bmpSave.PixelFormat:=pf24bit;
       bmpSave.Canvas.CopyRect(Rect(0,0,wR,hR),bmp.Canvas,Ramka);
       BS:=CreateBlobStream(FieldByName("Foto"), bmWrite);
       BS.Write(sgntB,82);
       bmpSave.SaveToStream(BS);
       BS.Write(sgntE,22);
     finally
       bmpSave.Free;
       BS.Free;
     end;
     Post;      
   end;
 end;
end;



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

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.025 c
14-1117028731
Lexer
2005-05-25 17:45
2005.06.14
OR в C++ одним знаком


14-1117107455
Толян
2005-05-26 15:37
2005.06.14
приколы на Delphi


3-1115211791
pavel_guzhanov
2005-05-04 17:03
2005.06.14
Как в базу данных поместить картинку?


14-1117095731
Nic87
2005-05-26 12:22
2005.06.14
Вопрос модераьорам


4-1114183071
Хинт
2005-04-22 19:17
2005.06.14
Вывод графики на экран




   Наверх