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

Ynt: Veritabanına Resim'i Yoluyla ,Kayderek Göstermek..... Gönderen: FetihlerFatihi Tarih: 28 March 2007 10:40:45
Ellerine sağlık hocam.

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........
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.