الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

الصور في قواعد البيانت

مغلق
بدأه romanof في 1 يوليو 2005 · 2 رد · 573 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اذكر أن الاخ اتجاهات سال مرة عن العمل مع ا لصور في قواعد البيانات فاعددت هذا الموضوع لكن تعطل المنتدى وضاعت المشاركة

على العموم انا حاولت الاجابة

لنفترض ان لدينا جدول من البيانات وكان احد الحقول عبارة عن صورة هناك أكثر من طريقة

الطريقة الاولى ان تقوم بنسخ الصور مباشرة الى الحقل الذي يحتوي على الذي يخزن الصورة وليكن MyImage

طبعا على الفورم يستحسن ان تقوم بإخفاء الحقل الذي يخزن الصور

في حالة الاضافة ممكن تعمل كما الكود التالي

procedure TForm1.Button2Clicck(Sender: TObject);
begin
  if OpenPictureDialog1.Execute then
  begin
  Table1.Insert; //  Table1.Edit; 
  Table1MyImage.LoadFromFile(OpenPictureDialog1.FileName);   
  ……
  Table1.Post;
  End;
End;

اما تعديل صورة موجودة اعتقد انه لايختلف عن الكود السابق الا بوضع المنهج Edit بدلا من Insert

اما الطريقة الثانية فهي بإستخدام المكون DBImage من الصفحة DataCtrls

بوضع الخاصية dataSource بالقيمة المناسبة والخاصية DataField بإسم الحقل الذي يحتوي على الصور او الذي سوف تخزن فيه الصور

انظر الكود التالي

procedure TForm1.Button3Click(Sender: TObject);
var
  B: TBitmap;
begin
  B := TBitmap.Create;
  Table1.Insert;// Table1.Edit; 
  try
    B.LoadFromFile('c:\delphi\images\splashh\16color\athena.bmp');
    DBImage1.Picture.Assign(B);
  finally
    B.Free;
  end;

..
Table1.Post;
End;

لاحظ ان التعديل يختلف عى الاضافة فقط بوضع Edit بدلا من Insert

في كثير من الحالات تواجهك مشكلة هي ان الصور التي تريد حفظها هي صور بالتنسيق jpb بينما في

المكون DBImage لا يتعامل الا مع صور صور بالتنسيق *.bmp لذلك رايت انه من المفيد ارفاق الكود الذي يحول الصورة من التنسيق *.jpg إالى التنسيق *.bmp

//=============================================
uses 
  JPEG; 
. . . .
procedure JPEGtoBMP(const FileName: TFileName); 
var 
  jpeg: TJPEGImage; 
  bmp:  TBitmap; 
begin 
  jpeg := TJPEGImage.Create; 
  try 
    jpeg.CompressionQuality := 100; {Default Value} 
    jpeg.LoadFromFile(FileName); 
    bmp := TBitmap.Create; 
    try 
      bmp.Assign(jpeg); 
      bmp.SaveTofile(ChangeFileExt(FileName, '.bmp')); 
    finally 
      bmp.Free 
    end; 
  finally 
    jpeg.Free 
  end; 
end; 
//===================================================

وهذا الكود يعمل عكس الكود السابق اي يحول

الصورة من التنسيق *.bmp إالى التنسيق *. jpg

uses 
  JPEG; 
.....
procedure BMPTOJPEG (const FileName: TFileName);
var
  JPEG: TJPEGImage;
  Bitmap: TBitmap;
begin
  JPEG := TJPEGImage.Create;
  Bitmap := TBitmap.Create;
  try
    Bitmap.LoadFromFile(FileName);
    JPEG.Assign(Bitmap);
    JPEG. SaveTofile(ChangeFileExt(FileName, '.jpg'));
  finally
    JPEG.Free;
    Bitmap.Free;
  end;
end;

//=======================================================

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#2

كانت هناك ايضا طريقة اخرى سهلة وهي النسخ من الحافظة الموقتة Buffer لكن اعتقد ان الامثلة السابقة ستفي بالغرض

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#3

تفي وزيادة .. شكرا رومانوف , على الموضوع المهم

هذا الموضوع مغلق.

مواضيع مشابهة