Delphi Can
TImage ve Sql - Baskı Önizleme

+- Delphi Can (http://www.delphican.com)
+-- Forum: Delphi (http://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Genel Programlama (http://www.delphican.com/forumdisplay.php?fid=6)
+--- Konu Başlığı: TImage ve Sql (/showthread.php?tid=1768)



TImage ve Sql - narkotik - 05-01-2018

Merhaba Arkadaşlar,
Resimlerin dosya yolunu değil kendisini saklıyorum. DBImage değil TImage nesnesinde Jpg,Png,Bmp resimlerini yükleyebilmek, veritabanında image veritipli alana kaydetmek formdaki diğer nesneleri çekerken onuda çekmek istiyorum. Streamlerle bu işlemi yaptım Savede sıkıntı yok Load'da sıkıntı yaşıyorum hazır fonksiyon konusunda yardımcı olursanız sevinirim.


TImage ve Sql - mcuyan - 05-01-2018

Çalışan hazır kodlarımdan direk yapıştırıyorum..

var:
 ms: TMemoryStream;
 Surf: TBitmapSurface;
 saveParams : TBitmapCodecSaveParams;

begin
     ms := TMemoryStream.Create;
     Surf := TBitmapSurface.Create;
     Surf.Assign(image6.Bitmap);
     Saveparams.Quality := 100; //Bu kısımda resim boyutunu küçültebilir siniz..
     TBitmapCodecManager.savetostream(ms, Surf, '.jpg',@SaveParams);
     ms.Position := 0;
     TBlobField(MT.FieldByName('parca_res1')).LoadFromStream(ms);
     ms.Free;
     image6.Bitmap := nil;
     surf.Free;
end;



ÇÖZÜM - narkotik - 06-01-2018

Jpg formatında TImage nesnesine resim açma, Sql Kaydetme, Sql'den Yükleme işlemlerini gerçekleştiren yordamları biraz uğraş sonrası yaptım İhtiyacı olanlar için ;

Uses Jpeg;
{$R *.dfm}

procedure ResimSec(Image: TControl);
var
 SPicFileName: string;
 JP: TJPegImage;
 Pic: TPicture;
 Dialog: TOpenPictureDialog;
begin
 Dialog := TOpenPictureDialog.Create(nil);
 Dialog.Title := 'Resim Seç(Jpg)';
 if not((Image.ClassName = 'TDBImage') or (Image.ClassName = 'TImage')) then
   Exit;
 Dialog.Filter := '*.jpg|*.jpg';
 if Image.ClassName = 'TDBImage' then
   TDBImage(Image).Stretch := True
 else
   TImage(Image).Stretch := True;
 Try
   if Dialog.Execute then
   begin
     JP := TJPegImage.Create;
     Pic := TPicture.Create;
     SPicFileName := Dialog.FileName;
     Try
       JP.LoadFromFile(SPicFileName);
       Pic.Assign(JP);
       if Image.ClassName = 'TDBImage' then
         TDBImage(Image).Picture := Pic
       else
         TImage(Image).Picture := Pic;
     Finally
       JP.Free;
       Pic.Free;
     End;
   end;
 Finally
   Dialog.Free;
 End;
end;

procedure ResimKaydetSql(Image: TImage; Query: TADOQuery; Alan: String);
var
 Ms: TMemoryStream;
begin
 Query.Edit;
 if Image.Picture.Graphic = nil then
   Exit;
 Ms := TMemoryStream.Create;
 try
   Image.Picture.Graphic.SaveToStream(Ms);
   Ms.Position := 0;
   TBlobField(Query.FieldByName(Alan)).LoadFromStream(Ms);
 finally
   Ms.Free;
 end;
 Image.Picture := nil;
end;

procedure ResimYukleSql(Image: TImage; Query: TADOQuery; Alan: String);
var
 JPG: TJPegImage;
 Picture: TPicture;
 St: TStream;
begin
 JPG := TJPegImage.Create;
 Picture := TPicture.Create;
 St := TStream.Create;
 Image.Stretch:=True;
 try
   if Query.FieldByName(Alan).AsString='' then Exit;
   St := Query.CreateBlobStream(TBlobField(Query.FieldByName(Alan)), bmRead);
   try
     JPG.LoadFromStream(St);
     Picture.Graphic := JPG;
     Image.Picture := Picture;
   finally
     St.Free;
   end;
 finally
   JPG.Free;
   Picture.Free;
 end;
end;

(05-01-2018, Saat: 22:15)mcuyan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Çalışan hazır kodlarımdan direk yapıştırıyorum..

var:
 ms: TMemoryStream;
 Surf: TBitmapSurface;
 saveParams : TBitmapCodecSaveParams;

begin
     ms := TMemoryStream.Create;
     Surf := TBitmapSurface.Create;
     Surf.Assign(image6.Bitmap);
     Saveparams.Quality := 100; //Bu kısımda resim boyutunu küçültebilir siniz..
     TBitmapCodecManager.savetostream(ms, Surf, '.jpg',@SaveParams);
     ms.Position := 0;
     TBlobField(MT.FieldByName('parca_res1')).LoadFromStream(ms);
     ms.Free;
     image6.Bitmap := nil;
     surf.Free;
end;
Teşekkür Ederim.


TImage ve Sql - Bay_Y - 07-11-2018

Paylaşım için teşekkürler , Elinize sağlık