Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.14;
Скачать: 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 вся ветка

Текущий архив: 2005.06.14;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.026 c
10-1094454364
serg128
2004-09-06 11:06
2005.06.14
Не получается законнектиться вторым экземпляром программы...


6-1111229954
Виталик
2005-03-19 13:59
2005.06.14
Передать файл по сети между двух программ


14-1117002765
Гаврила
2005-05-25 10:32
2005.06.14
Automatic Delphi 7 Code Completion


14-1116961067
petya-kurochkin
2005-05-24 22:57
2005.06.14
Куда делся DelphiGFX, чё то обновления затянулись, так затянулись


3-1115277422
Dels
2005-05-05 11:17
2005.06.14
Компонент DBMemo в Windows XP