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
Delphiden SQL veritabanına resim eklemek
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- muratcelik64
- Üye
- Mesajlar: 17
- Kayıt: 16 Tem 2014 05:07
Re: Delphiden SQL veritabanına resim eklemek
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;
// 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;
Re: Delphiden SQL veritabanına resim eklemek
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.
kolay gelsin.
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
Re: Delphiden SQL veritabanına resim eklemek
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
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
Re: Delphiden SQL veritabanına resim eklemek
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/)
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/)