![]() |
|
SQL Server dan Resim Okuma - Baskı Önizleme +- Delphi Can (https://www.delphican.com) +-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3) +--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6) +--- Konu Başlığı: SQL Server dan Resim Okuma (/showthread.php?tid=6008) |
SQL Server dan Resim Okuma - barissagir - 18-05-2021 Selamun Aleykum, Merhaba arkadaşlar. SQL servera image de ki resmimi kaydettim lakin okuyamıyorum. https://www.youtube.com/watch?v=EaCJmcR5V_g bu videoda ekleme ve okumayı anlatmış. Lakin benim delphide TBlobStreamMode = (bmRead, bmWrite, bmReadWrite); gelmiyor. Okuma kodu şöyle uses DBTables; procedure LoadPicture; var bs : TBlobStream; begin if d.SiparisTResim.value = Nil then begin Image1.Picture.Graphic:=Nil; end else begin bs := TBlobStream(d.SiparisT.CreateBlobStream(d.SiparisTResim, bmRead)); try bs.Position :=0; Image1.Picture.LoadFromStream(bs); finally bs.Free; end; end; end; bmRead bende çıkmıyor. Ne yapmalıyım? SQL Server dan Resim Okuma - frmman - 18-05-2021 VCL için alternatif öneri, Jedi bileşen setinde DBimage bileşeni var. Veritabanındaki jpg tipindeki resimleri doğrudan gösterebiliyor. Cvp: SQL Server dan Resim Okuma - barissagir - 18-05-2021 (18-05-2021, Saat: 18:36)frmman Adlı Kullanıcıdan Alıntı: VCL için alternatif öneri, Jedi bileşen setinde DBimage bileşeni var. Veritabanındaki jpg tipindeki resimleri doğrudan gösterebiliyor. DBimage yerine Image e yüklemek istiyorum. Kodlarda sıkıntı yok Ama 'bmRead' parametresi gelmiyor. Delphide bi ayarmı gerekiyor? uses Data.DB; yazınca problem çözüldü. Cvp: SQL Server dan Resim Okuma - frmman - 18-05-2021 uses jpeg; ... .... Function TDataModul.JPEGSentinelsAreOK (Const Filename: TBlobField): Boolean; Var FileStream: TStream; w1: Word; // a "word" is always 2 bytes long w2: Word; Begin ASSERT (SizeOf (Word) = 2); FileStream := TBlobStream.Create (Filename, bmRead); Try FileStream.Seek (0, soFromBeginning); FileStream.Read (w1, 2); FileStream.Position := FileStream.Size - 2; FileStream.Read (w2, 2) Finally FileStream.Free End; Result := (w1 = $D8FF) And (w2 = $D9FF); End; Procedure TDataModul.ResimOku (ResimField: TBlobField; Resim: TPicture); Var jpg: TJPEGImage; stbmp: TStream; bmp: TBitmap; stjpg: TStream; Begin If Resimfield.isnull Then Begin Resim.Assign (Nil); Exit; End; If JPEGSentinelsAreOK (ResimField) Then Begin //1 jpg := TJPEGImage.Create; bmp := Tbitmap.Create; stjpg := TBlobStream.Create (ResimField, bmRead); stbmp := TMemoryStream.Create; jpg.LoadFromStream (stjpg); If Jpg.PixelFormat = jf24bit Then Bmp.PixelFormat := pf24bit Else Bmp.PixelFormat := pf8bit; Bmp.Width := Jpg.Width; Bmp.Height := Jpg.Height; Bmp.Canvas.Draw (0, 0, Jpg); Bmp.SaveToStream (stbmp); Resim.Assign (bmp); bmp.Free; jpg.Free; stjpg.Free; stbmp.Free; End; End; Datamodul onchange olayındada Datamodul.ResimOku (Datamodul.QSorguRESIM, image1.picture); Şeklinde kullanabilirsiniz. Cvp: SQL Server dan Resim Okuma - barissagir - 18-05-2021 (18-05-2021, Saat: 18:47)frmman Adlı Kullanıcıdan Alıntı:uses jpeg; ... .... Function TDataModul.JPEGSentinelsAreOK (Const Filename: TBlobField): Boolean; Var FileStream: TStream; w1: Word; // a "word" is always 2 bytes long w2: Word; Begin ASSERT (SizeOf (Word) = 2); FileStream := TBlobStream.Create (Filename, bmRead); Try FileStream.Seek (0, soFromBeginning); FileStream.Read (w1, 2); FileStream.Position := FileStream.Size - 2; FileStream.Read (w2, 2) Finally FileStream.Free End; Result := (w1 = $D8FF) And (w2 = $D9FF); End; Procedure TDataModul.ResimOku (ResimField: TBlobField; Resim: TPicture); Var jpg: TJPEGImage; stbmp: TStream; bmp: TBitmap; stjpg: TStream; Begin If Resimfield.isnull Then Begin Resim.Assign (Nil); Exit; End; If JPEGSentinelsAreOK (ResimField) Then Begin //1 jpg := TJPEGImage.Create; bmp := Tbitmap.Create; stjpg := TBlobStream.Create (ResimField, bmRead); stbmp := TMemoryStream.Create; jpg.LoadFromStream (stjpg); If Jpg.PixelFormat = jf24bit Then Bmp.PixelFormat := pf24bit Else Bmp.PixelFormat := pf8bit; Bmp.Width := Jpg.Width; Bmp.Height := Jpg.Height; Bmp.Canvas.Draw (0, 0, Jpg); Bmp.SaveToStream (stbmp); Resim.Assign (bmp); bmp.Free; jpg.Free; stjpg.Free; stbmp.Free; End; End; Çok teşekkür ederim. |