Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
panel görüntüsünü alıp veritabanına kaydetme
#1
Arkadaşlar, 

formumda bir panel var görüntüsünü alıp veritabanına nasıl kaydedebilirim ?

aşağıdaki kod ile deniyorum fakat,   TBlobField(Panel1.Handle).SaveToStream(Stream); bu satırda hata alıyorum.

Teşekkürler.



procedure TForm1.Button2Click(Sender: TObject);
var
 Dosya: TMemoryStream;
 Jpeg: TJpegImage;
 Stream: TMemoryStream;
begin
 Jpeg := TJpegImage.Create();
 try
   Stream := TMemoryStream.Create();
   try
     TBlobField(Panel1.Handle).SaveToStream(Stream);
     Stream.Position := 0;
     Jpeg.LoadFromStream(Stream);
     Image1.Picture.Assign(Jpeg);
   finally
     Stream.Free();
   end;
 finally
   Jpeg.Free();
 end;
end;
Cevapla
#2
Panel1.Handle değil de veritabanınızın resmi sakladığı field olmasın orası? FieldbyName('resim') gibisinden...
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#3
(03-05-2020, Saat: 11:51)mrmarman Adlı Kullanıcıdan Alıntı: Panel1.Handle değil de veritabanınızın resmi sakladığı field olmasın orası? FieldbyName('resim') gibisinden...

Merhaba,

Evet öylede panelin resmini nasıl alabilirim hocam ?

Teşekkürler.
Cevapla
#4
Idea  Buradan yürüyebilirsiniz...

procedure TForm1.Button2Click(Sender: TObject);
var
  PanelDC : HDC;
  Bitmap  : TBitmap;
begin
  Bitmap  := TBitmap.Create;
  try
    Bitmap.PixelFormat := pf24bit;
    Bitmap.SetSize( Panel1.Width, Panel1.Height );

    PanelDC := GetDC( Panel1.Handle );
    BitBlt( Bitmap.Canvas.Handle, 0, 0, Panel1.Width, Panel1.Height, PanelDC, 0, 0, SRCCOPY );
    ReleaseDC( Panel1.handle, PanelDC );

    Image1.Picture.Graphic := Bitmap;
  finally
    Bitmap.Free;
  end;
end;


Burada JPG olarak çıktı almak istiyorsanız  Jpeg.Assign( Bitmap ); ile içine alıp Jpeg.SaveToFile olarak Jpeg formatında kayıt yapabilirsiniz. 
Çıktılarınız hangi format olursa olsun altyapıyı Bitmap kurarsanız başınız ağrımaz.

Eklemeyi unutmuşum :  Idea
Yukarıdaki işlem VCL formlar için geçerli.

FMX olsaydı ( FMX Windows veya Android ) o zaman iş çok daha pratik idi..

procedure TForm1.Button2Click(Sender: TObject);
begin
 Image1.Bitmap := Panel1.MakeScreenshot;
end;
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#5
(03-05-2020, Saat: 12:44)mrmarman Adlı Kullanıcıdan Alıntı: Idea  Buradan yürüyebilirsiniz...

procedure TForm1.Button2Click(Sender: TObject);
var
  PanelDC : HDC;
  Bitmap  : TBitmap;
begin
  Bitmap  := TBitmap.Create;
  try
    Bitmap.PixelFormat := pf24bit;
    Bitmap.SetSize( Panel1.Width, Panel1.Height );

    PanelDC := GetDC( Panel1.Handle );
    BitBlt( Bitmap.Canvas.Handle, 0, 0, Panel1.Width, Panel1.Height, PanelDC, 0, 0, SRCCOPY );
    ReleaseDC( Panel1.handle, PanelDC );

    Image1.Picture.Graphic := Bitmap;
  finally
    Bitmap.Free;
  end;
end;


Burada JPG olarak çıktı almak istiyorsanız  Jpeg.Assign( Bitmap ); ile içine alıp Jpeg.SaveToFile olarak Jpeg formatında kayıt yapabilirsiniz. 
Çıktılarınız hangi format olursa olsun altyapıyı Bitmap kurarsanız başınız ağrımaz.

Eklemeyi unutmuşum :  Idea
Yukarıdaki işlem VCL formlar için geçerli.

FMX olsaydı ( FMX Windows veya Android ) o zaman iş çok daha pratik idi..

procedure TForm1.Button2Click(Sender: TObject);
begin
 Image1.Bitmap := Panel1.MakeScreenshot;
end;

Çok teşekkür ederim hocam oldu.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  dbgrid sutun toplamini alip lazreport da gostermek sadikacar60 6 1.071 02-12-2024, Saat: 12:21
Son Yorum: sadikacar60
  Label leri Panel içersinde sıralama mersoy 2 575 10-08-2024, Saat: 03:51
Son Yorum: mersoy
  JSON Verilerini Veritabanına Kaydetmek kajmerantime 6 1.791 03-11-2023, Saat: 15:05
Son Yorum: kajmerantime
  fastreport pdf olarak kaydetme sorunu hyperfou 3 1.667 11-07-2023, Saat: 12:06
Son Yorum: delphiman
  ClientDataSet ve XML - Kaydetme Hatası nehirnnn 3 1.271 25-02-2023, Saat: 00:42
Son Yorum: Halil Han BADEM



Konuyu Okuyanlar: 1 Ziyaretçi