Delphiden SQL veritabanına resim eklemek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
sahinben
Üye
Mesajlar: 4
Kayıt: 17 Tem 2014 01:11

Delphiden SQL veritabanına resim eklemek

Mesaj gönderen sahinben »

Arkadaşlar Merhaba,

Küçük bir Personel takip programı yapıyorum ve Delphi 7 kullanıyorum.
Veri tabanı olarak MS SQL 2012 Kullanıyorum.
Bağlantı Componentleri olarak da ADOconnection, ADOquery,Datasource kullanıyorum.
amacım,Kişileri eklerken fotoğraflarınıda yükleyip bilgilerle beraber sql server e atmam gerekiyor.
resimi Delphi image nesnesine nasıl yüklerim ve kaydet deyince veritabanına diğer bilgilerle beraber nasıl gönderirim.

Yardımlarınızdan dolayı, şimdiden çok tşk ederim
saygılar
Bülent
Kullanıcı avatarı
muratcelik64
Üye
Mesajlar: 17
Kayıt: 16 Tem 2014 05:07

Re: Delphiden SQL veritabanına resim eklemek

Mesaj gönderen muratcelik64 »

Kendi kullandığım yöntemi gönderiyorum.

// Bu kısım fotoyu 600x400 ebadına getirir, bu de DB yük bindirmez.
// çözünürlük ne kadar fazla olursa DB nin boyutu o kadar artar. İşlem süresi uzar
procedure TForm.Foto_Size(Sender: TObject);
VAR
bmp : TBitmap;
jpg : TJpegImage;
begin
FileExt:=AnsiUpperCase(ExtractFileExt(OpenPictureDialog1.FileName));
// dosyanın formatını kontrol et ve yükle
if FileExt ='.BMP' then
begin
bmp := TBitmap.Create;
bmp.LoadFromFile(OpenPictureDialog1.FileName);
jpg := TJPEGImage.Create;
Jpg.Assign(bmp);
end;
if FileExt ='.JPG' then
begin
Jpg := TJPEGImage.Create;
Bmp := TBitmap.Create;
Jpg.LoadFromFile(OpenPictureDialog1.FileName);
end;
// JPEG i bitmap a kopyala ve ufalt
Bmp.PixelFormat := pf32bit; //pf24bit;
Bmp.Width := 600;
Bmp.Height := 450;
Bmp.Canvas.StretchDraw(Rect(0,0,600,450),Jpg);
// BMP yi jpg ye kopyala
// Jpg.Assign(Bmp);
DBImage1.Picture.Assign(Bmp);
Jpg.Free;
Bmp.Free;
end;


procedure TForm.Resim_islem(Sender: TObject);
begin
if not (Personel.State in dsEditModes) then exit; // Table açık ise işleme gir,
if OpenPictureDialog1.Execute then
begin
ImageTut.Picture.LoadFromFile(OpenPictureDialog1.FileName);
imgSat := ImageTut.Height;
imgSut := ImageTut.Width;
if (imgSat>600)or(imgSut>450) then Foto_Size(nil)
else
begin
FileExt:=AnsiUpperCase(ExtractFileExt(OpenPictureDialog1.FileName));
if FileExt='.JPG' then LoadJPEGPictureFile(DBImage1.Picture.Bitmap,'',OpenPictureDialog1.FileName); //Jpg,Jpeg
if FileExt='.BMP' then DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName); // bmp
end;
end;
ImageTut.Picture:=nil;
end;
tayipk
Üye
Mesajlar: 284
Kayıt: 27 Kas 2013 11:32

Re: Delphiden SQL veritabanına resim eklemek

Mesaj gönderen tayipk »

merhaba veritabanında resim tutmak istiyorsun fakat bu işlem veritabanını şişireceği için neden şöyle bir yöntem düşünmedin örneğin personel resimlerini programın çalıştığı klasör altına resim isimli bir klasör oluşturup resimleri oraya atarsın veritabanına sadece resmin ismini kayıt edersin sonra o personeli çağırdığın zaman ise veritabanındaki yol ve isimde buluna resimi load yaparsın bu senin için daha verimli bir çözüm olur diye düşünüyorum. en azından veri tabanın şişmez.
kolay gelsin.
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
sahinben
Üye
Mesajlar: 4
Kayıt: 17 Tem 2014 01:11

Re: Delphiden SQL veritabanına resim eklemek

Mesaj gönderen sahinben »

Tayipk kardeşim, Dönüşün için Tşk ederim..
Veri Tabanına yaklaşık 500 Tane personel girişi yapacağım, Bunun MSSQL üzerinde aşırı bir şişme yapacağını düşünmüyorum, Peki. Nasıl olur bu işlem yardımcı olma imkanın var mı?
Kolay gelsin
Bülent
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: Delphiden SQL veritabanına resim eklemek

Mesaj gönderen csunguray »

Aşağıdaki bağlantıdaki örnekten yapabilirsiniz.

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/)
Cevapla