Delphi Can

Orjinalini görmek için tıklayınız: TImage ve Sql
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
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.
Ç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;
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.
Paylaşım için teşekkürler , Elinize sağlık