Resimleri veritabanına kaydetmek?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Ahmett-AydiNN
Üye
Mesajlar: 2
Kayıt: 28 Ara 2011 08:13

Resimleri veritabanına kaydetmek?

Mesaj gönderen Ahmett-AydiNN » 24 Nis 2012 04:57

Merhaba Arkadaşlar. Delphide Kumanda Stok Otomasyonu Yapıyorum. Yaptıgım Otomasyona Kumanda Resimlerini de Veritabanına Kaydetmek İstiyorum Fakat Hiçbir Bilgim Yok Bu Konuda. Veri Tabanı Olarak Acces Kullanıyorum. Resimi Nasıl Kaydedebileceğimi Söyleyebilecek Arkadaşların Yardımını Bekliyorum. Teşekkürler..

orhancc
Üye
Mesajlar: 585
Kayıt: 24 Ağu 2010 01:14
Konum: İstanbul / Kadıköy
İletişim:

Re: Resimleri veritabanına kaydetmek?

Mesaj gönderen orhancc » 25 Nis 2012 03:29

Resimleri veritabanına kaydetmek yerine bir klasöre yazdır ve dosya yollarını da veritabanına kaydet, yoksa veritabanı zamanla çok büyük boyutlara ulaşır.

Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 687
Kayıt: 28 Nis 2011 09:33
Konum: İstanbul

Re: Resimleri veritabanına kaydetmek?

Mesaj gönderen greenegitim » 27 Nis 2012 05:58

orhancc yazdı:Resimleri veritabanına kaydetmek yerine bir klasöre yazdır ve dosya yollarını da veritabanına kaydet, yoksa veritabanı zamanla çok büyük boyutlara ulaşır.
Konu açmak istemediğim için buradan yazayım dedim.
Güzel bir yöntem bende öyle yapıyorum ama bir ayrıntı mesela programım çok kullanıcılı resimleri ana bilgisayardada kaydeden var diğer kullanıcılardada veri tabanına atmayıp yolu tutuğu için herkes kendi ilişkilendirdiği resmi görüyor bunu şu şekilde çözebiliyorum sadece

resimler resim klasöründe, resim klasörünü paylaşıma açıp her bilgisayarda
BU BATCH i çalıştırıyorum başka bir fikri önerisi olan varmı?
copy \\SERVER\RESIM\*.* C:\PROJE\RESIM\
copy C:\PROJE\RESIM\*.* \\SERVER\RESIM\
Mücadele güzelleştirir!

orhancc
Üye
Mesajlar: 585
Kayıt: 24 Ağu 2010 01:14
Konum: İstanbul / Kadıköy
İletişim:

Re: Resimleri veritabanına kaydetmek?

Mesaj gönderen orhancc » 27 Nis 2012 10:33

Tüm resimleri ana bilgisayara kayıt edeceksin o zaman sıkıntı olmaz. Ana makine hem sql sunucu hem dosya sunucusu gibi çalışacak. Bankalarda merkez ve şube işlemlerini bu şekilde yapıyoruz sorun olmuyor.

Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 687
Kayıt: 28 Nis 2011 09:33
Konum: İstanbul

Re: Resimleri veritabanına kaydetmek?

Mesaj gönderen greenegitim » 27 Nis 2012 11:37

O zaman şu şekilde olacak parametrik olarak serverin paylaşıma açık klasörü olacak dosya yazımına da açık olacak server var ise kayıtyolu \\SERVER\RESIM olacak ve oraya yazacak server kendiside görebilmesi için mecburen paylaşımdan görecek \\server diye ama bu sorun olmazmı biri gelip resimleri silede bilir?
Mücadele güzelleştirir!

orhancc
Üye
Mesajlar: 585
Kayıt: 24 Ağu 2010 01:14
Konum: İstanbul / Kadıköy
İletişim:

Re: Resimleri veritabanına kaydetmek?

Mesaj gönderen orhancc » 27 Nis 2012 11:41

Klasöre sadece yazma ve değiştirme yetkisi verebilirsin, silme işlemi yapmayacaksan silme yetkisine zaten gerek yok.

mkysoft
Kıdemli Üye
Mesajlar: 2867
Kayıt: 25 Ağu 2003 11:35
Konum: İstanbul
İletişim:

Re: Resimleri veritabanına kaydetmek?

Mesaj gönderen mkysoft » 29 Nis 2012 01:42

tavsiyem ilişkisel bir veri tabanı kullanmanız (RDBMS). Firebird, mysql, msspl gibi. Veri tabanınızda sadece resimleri tutacağınız bir tablo ve resimler için bir blob alan açın. Stream komutları kullanarak bu alana resim yükleyip okuyabilirsiniz. Devexpress companent setinde hayır dbimage nesneleride mevcut. Accsessde de blob alan özelliği var ancak resim gömünce dosya çok büyüyeceğinden çok fazla performans kaybı olur. rmdbs de ise bir fark hissetmezsiniz. Hemde programınız internetten bile kullanılabilir. Hiç bir klasörü paylaşıma açmak gerekmediğinden virüsler, yanlış eylemler, paylaşım bozulmaları daha az olur.

Kullanıcı avatarı
csunguray
Üye
Mesajlar: 844
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: Resimleri veritabanına kaydetmek?

Mesaj gönderen csunguray » 01 May 2012 09:46

Aşağıdaki tartışmada bu konuyla ilgili bilgiler bulabilirsiniz.

viewtopic.php?f=2&t=6107&start=15
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)

Kullanıcı avatarı
burakb44
Üye
Mesajlar: 131
Kayıt: 11 Mar 2005 03:13

Re: Resimleri veritabanına kaydetmek?

Mesaj gönderen burakb44 » 02 May 2012 01:46

geçmişte benimdi böyle bi çalışmaya ihtiyacım olmuştu sağolsun forumdaki arkadaşların yardımıyla halletmiştim kodlar aşağıdaki gibi bi tane okuma bi tanede vt ye yazma proceduru oluşturdum

uses kısmına jpeg i eklemeyi unutma yoksa hata verecektir

vt ye yazmak için bu kodu kullanıyorum

Kod: Tümünü seç

Var
fs : TFileStream;
bs : TStream;
begin
if Button = nbPost Then
  Begin
  DataModule1.YemekListesi.Edit;
  if Image1.Picture.Graphic = nil then
    begin
      datamodule1.YemekListesi.FieldByName('RESIM').AsString := '';
    end;

  if Image1.Picture.Graphic <> nil then
    begin
      if resimac.FileName = '' then
        Begin
          Image1.Picture.SaveToFile('temp.jpg');
          resimac.FileName := 'temp.jpg';
        End;

      fs := TFileStream.Create(resimac.FileName, fmOpenRead);
      bs := TStream(datamodule1.YemekListesi.CreateBlobStream(datamodule1.YemekListesi.FieldByName('RESIM'), bmread));
      bs.CopyFrom(fs, 0);
      bs.Free;
      fs.Free;
    end;
  End;
end;

vt den okuyum göstermek içinde bu kodu kullanıyorum

Kod: Tümünü seç

var
jpg:TJpegImage;
begin
  if datamodule1.YemekListesi.FieldByName('resim').AsString <> '' then
    begin
      jpg := TJpegImage.Create;
      jpg.LoadFromStream(datamodule1.YemekListesi.CreateBlobStream(datamodule1.YemekListesi.FieldByName('resim'), bmRead));
      Image1.Picture.Graphic:=jpg;
      jpg.Free;
    end
  else
    begin
      image1.Picture.Graphic := nil;
    end;
end;
kolay gelsin

Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 687
Kayıt: 28 Nis 2011 09:33
Konum: İstanbul

Re: Resimleri veritabanına kaydetmek?

Mesaj gönderen greenegitim » 03 May 2012 09:35

veritabanına kaydetmek yerine şöyle bir mantık oluşturdum herkaydın bir id si var autoınc bir alan resmi resimler klasörüne atarken idno.jpg olarak atıyor
idno yu dbedite bağlayıp change olayında da resimler klasöründe idno.jpg varmı diye kontrol etiriyorum var ise resmi getir yok ise bos.jpg resmini getiriyor.
Mücadele güzelleştirir!

mkysoft
Kıdemli Üye
Mesajlar: 2867
Kayıt: 25 Ağu 2003 11:35
Konum: İstanbul
İletişim:

Re: Resimleri veritabanına kaydetmek?

Mesaj gönderen mkysoft » 03 May 2012 09:45

müşterinin programdan ne istediği çok önemli. Bulduğunuz çözüm tek kullanıcı programlar için yeterli. Programı ilerde çok kullanıcılı yapacaksanız tavsiyeleri işin başındayken uygulamanız ilerde işinizi kolaylaştıracaktır.

Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 687
Kayıt: 28 Nis 2011 09:33
Konum: İstanbul

Re: Resimleri veritabanına kaydetmek?

Mesaj gönderen greenegitim » 03 May 2012 09:58

mkysoft yazdı:müşterinin programdan ne istediği çok önemli. Bulduğunuz çözüm tek kullanıcı programlar için yeterli. Programı ilerde çok kullanıcılı yapacaksanız tavsiyeleri işin başındayken uygulamanız ilerde işinizi kolaylaştıracaktır.
Tabi bu geçici bir çözüm şimdilik çok kullanıcılarda resim yolunu parametrik olarak \\server\resimler şeklinde olacak işin veritabanı boyutuna geçince bi çok kontrol yapılacak çözünürlük resim boyutu vs. vs.
Mücadele güzelleştirir!

Cevapla