Arşiv Anasayfa Veritabanı Makaleleri
Sayfalar: 1
Veritabanına Resim'i Yoluyla ,Kayderek Göstermek..... Gönderen: HBV Tarih: 27 March 2007 22:26:40
Veritabanlarında Genelde Resimler pek tercih edilmezler,sebebi Veritabanlarını şişirdikleri için ..bu yüzden Proğramcılar değişik yöntemler aramağa başlamışlar ve hala bu konuda arayış içindeler.Ama bir gerçek varki günümüzde artık görsel (Resimli)projeler daha çok rağbet görmeğe başlamıştır.
Ama bazı Proğramcılar, Resimleri KB'ları düşük olmak kaydıyla Network'de kullanım kolaylığı yüzünden, Veritabanına kaydederek proje geliştiriyorlar.
Ben Size,Bir çok sitede de ,örnekler verilen ,Resimi Yoluyla Kaydetmeyi Toparlayarak, kısa ve uygulamalı anlatmağa  çalışacağım.
{Firebird Veritabanı ve Interbase Bileşenleri Kullanıldı.}
..............................;
Önce Veritabanımızda, IDNO(Integer) (ki... bu çok önemli; IDNO'da"Generators" Kullanıyoruz.Bu Field'ı gizliyebilirsiniz.) RESIM_ADI(VarChar=50), RESIM_YOLU(VarChar=200) Fieldlerini açıyoruz.(Diğer Ekliyeceğiniz Fieldler sizin Projenizin Gelişimine kalmış.Yani size bağlı.).


Sonra; Form'umuzda bir Image ve DBEdit1 Koyuyoruz ve Generators tanımlı IDNO'yu DBEdit1'e Atıyoruz,
"OnChange" Olayına;
:
try
  Image1.Picture.LoadFromFile(IBDataSet1.FieldByName('RESIM_YOLU).AsString);
 except
  Image1.Picture.LoadFromFile('C:\Proje\resimyok.bmp');
 end;
Böylece ilk Kod'umuzu Ekliyoruz,"IDNO" Field'li DBEdit1'in "OnChange" olayına atanan Bu Kod Resimlerin Görüntülenmesi açısından çok önemlidir.
Diyelim Yoluyla kaydettiğiniz Resim HardDisk'inizden silindi,daha önceden hazırlayıp"('C:\Proje\resimyok.bmp');" bu adrese kopyalayacağınız, resim olmadığını anlatan bir Joker resim'i hedefliyoruz,bunun amacı silinen orjinal resim bulunamazsa, bu Joker resim devreye girecektir.

yine bir OpenPictureDialog'la,DBEdit2 Koyup,"RESIM_YOLU" Field'ini Atıyoruz.Bu Field'e Resmin Yolu Yazılacaktır,Bu Field'de çok önemlidir.

Şimdi gelelim Resimlerin Yolunu Veritabanına yazma olayına  Form'umuza bir Button koyuyoruz,bu Buttonun "OnClick" Olayına;

:
begin
if MessageDlg('YENİ KAYIT AÇMAK İSTİYORMUSUNUZ?', mtWarning, [mbOK, mbCancel], 0) = mrOK then
  begin
   try
    IBDataSet1.Append;
   except
    ShowMessage('YENi KAYIT EKLERKEN HATA OLUSTU TEKRAR DENEYiNiZ');
   end;
   //OpenPictureDialog1.Filter:='All images ('+BitmapLoaders.GetLoadFilter;(Daha önceki makalemde Kullandığım "TiffRead.dll"dosyasını-projenizin Exe'nin      bulunduğu   yere kopyalayarak Tüm Formatları kullanabilirsiniz.).
  if OpenPictureDialog1.Execute then//Uses'e "jpeg";" eklemeyi unutmayınız.
    //with TLinearBitmap.Create do//("Filter" Parametresi kullanılırsa........).
     begin
       //LoadFromFile(OpenPictureDialog1.FileName);("Filter" Parametresi kullanılırsa........).
       Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);//Resim önce imagede görüntüleniyor.
       IBDataSet1.Edit;//Veritabanına yazmak için hazır......
       DBEdit2.Text:=OpenPictureDialog1.FileName;//Resmin VT'de görüntülenmesi için son darbe burada vuruluyor.
       IBDataSet1.Post;//Veritabanına yazıyor....
      end;
   end;
.......Atıyoruz...En son olarak Formumuza  DBText ve bir DBGrid Ekliyoruz (Liste için) , "OnCellClick" ve "OnKeyUp" olayına yine aşağıdaki kod'u atıyoruz;

:
DBText1.Caption:=IBDataSet1RESIM_YOLU.AsString;
Bunun Amacı Veritabanına kaydedilen Resim yolunu,Imagenin uygun bir yerine yerleştireceğimiz DBText'de görüntelemektir...

.............................Böylece Resimleri yoluyla Veritabanına kaydeden küçük projemiz hazır..HDD'nizin kapasitesine göre ,bu Şekilde Yüzlerce ve binlerce Resim'i yoluyla Veritabanınıza yazdırıp gösterebilirsiniz. Bir hatamız olduysa af ola ......Kolay Gelsin.......





Ynt: Veritabanına Resim'i Yoluyla ,Kayderek Göstermek..... Gönderen: babahayati Tarih: 28 March 2007 09:29:05
teşekkürler güzel makale ve bol şans kardeşim Smile
Ynt: Veritabanına Resim'i Yoluyla ,Kayderek Göstermek..... Gönderen: FetihlerFatihi Tarih: 28 March 2007 10:40:45
Ellerine sağlık hocam. Teşekkür
Ynt: Veritabanına Resim'i Yoluyla ,Kayderek Göstermek..... Gönderen: NewCoder Tarih: 28 March 2007 19:45:55
Merhaba;
Eline sağlık güzel bir makale olmuş.Aslında bende bu öntemle hallediyorum bu olayı.Ancak Server/Client programlamada şöyle bir sorun ortaya çıkıyor.Resim hangi clientten kaydedildi ise o clientten bakılınca gösterilebiliniyor.Doğal olarak o path diğer clientte olmayan bir kmonuma karşılık geliyor.Hem paylaşıma açık olmadan resmi görüntüleme şansı zaten yok.Bu sorunu acaba nasıl çözebiliriz.Buradaki değerli üstatlar belki bu soruna bşir çözüm getirebilirler.Herkese kolay gelsin.
Ynt: Veritabanına Resim'i Yoluyla ,Kayderek Göstermek..... Gönderen: HBV Tarih: 28 March 2007 20:10:42
Rica ederim........

: NewCoder
Server/Client programlamada
Evet Bunun üzerinede çalışmalarım var ... ama şu anda deneme aşamasında......
Ynt: Veritabanına Resim'i Yoluyla ,Kayderek Göstermek..... Gönderen: irfann Tarih: 29 March 2007 15:06:30
saolasın güsel bilgi için

Ynt: Veritabanına Resim'i Yoluyla ,Kayderek Göstermek..... Gönderen: HBV Tarih: 12 April 2007 20:29:47
"Veritabanına Resim'i Yoluyla ,Kayderek Göstermek" Başlıklı makalenin  arkadaşlarımıza daha faydalı olması kanısıyla Makaleye Ek olarak hazırladığım; Örnek proğramı Ek Seçenekler 'e Ekliyorum.("resimdeneme" Deneme Veritabanının bulunduğu klasörü C:\ kopyalayınız).
Kolay Gelsin.