اذكر أن الاخ اتجاهات سال مرة عن العمل مع ا لصور في قواعد البيانات فاعددت هذا الموضوع لكن تعطل المنتدى وضاعت المشاركة
على العموم انا حاولت الاجابة
لنفترض ان لدينا جدول من البيانات وكان احد الحقول عبارة عن صورة هناك أكثر من طريقة
الطريقة الاولى ان تقوم بنسخ الصور مباشرة الى الحقل الذي يحتوي على الذي يخزن الصورة وليكن 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; //=======================================================