delphi4arab منتديات دلفي للعرب
استخدام النوع Graphique & Binaire في قاعدة لبيانات - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : استخدام النوع Graphique & Binaire في قاعدة لبيانات (/showthread.php?tid=598)



استخدام النوع Graphique & Binaire في قاعدة لبيانات - nabilkeb - 19-02-2009

عند الحاجة في تطبيق أو برنامج معين إلى تخزين الصور ، و مع امكانية استخدام النوع Binaire أو Gphique . في جدول قواعد البيانات .

- استخدمت الأول تارة و الثاني تارة أخرى ، و لم ألحظ أي فرق من حيث الاستعمال مجملا ، أو من حيث حجم التخزين مثلا - ما هو الفرق بينهما في هذه الحالة ؟ و أيهما أستخدم ؟


استخدام النوع Graphique & Binaire في قاعدة لبيانات - محمد عبد العزيز - 19-02-2009


حقل من النوع Graphic يحوي حقل من نوع Bitmap اي صورة وليس اي صورة ونما فقط عائلة BMP
جرب تخزين صورة GIF، PNG او JPEG تفهم الامر
حقل من النوع Binary يحوي اي ملف من اي نوع او Stream سواء صورة او نص او صوت او...

ان كنت تخزن صور استخدم Graphic مع تحويلها الى Bitmap قبل تخزينها غير ذلك استخدم Binary
والسلام عليكم



استخدام النوع Graphique & Binaire في قاعدة لبيانات - nabilkeb - 19-02-2009

بارك الله فيك أخي عبد العزيز ، لقد تبين الفرق بين النوعين.

في المرفق جدول من ثلاثة حقول : الأول حقل نصي - الثاني جرافيك - الثالث بينار.
و فيه : تحويل صورة Jpg إلى Bmp و حفظها على القرص.
إقتباس : حقل من النوع Binary يحوي اي ملف من اي نوع
و رغم ( كما تقدمت بارك الله فيك) أن الحقل الثالث نوع بينار ، إلا أنه يظهر رسالة الخطأ عند محاولة ادخال صورة Jpg ، أي أنه مثل الحقل جرافيك ، لا يقبل إلا Bmp .
فما هو السبب ؟

السؤال الثاني : يمكن التحويل إلى Bmp ثم الإستدعاء للحفظ بالجدول عن طريق الحوار أو مباشرة ، و في الحالتين الحفظ أول بمسار معين .
هل يمكن الحفظ مباشرة بالجدول ؟

الثالث : الطريقة (السالفة) المرفقة تجبرني على و ضع زرين ، واحد للتخزين المباشر إذا كانت الصورة Bmp ، الثاني للتحويل إذا كانت Jpg ثم التخزين.
[COLOR="#0000ff"]هل من طريقة للتحقق من اللاحقة ، إذا كانت Bmp التخزين بالجدول مباشرة ، و إلا التحويل ثم التخزين
[/COLOR] ؟

عذرا على الإطالة ، و بارك الله فيك عبد العزيز خصوصا وفيكم جميعا عمومــا


استخدام النوع Graphique & Binaire في قاعدة لبيانات - محمد عبد العزيز - 20-02-2009


إقتباس :الحقل الثالث نوع بينار ، إلا أنه يظهر رسالة الخطأ عند محاولة ادخال صورة Jpg ، أي أنه مثل الحقل جرافيك ، لا يقبل إلا Bmp
لاعلاقة لنوع الحقل بالخطا
الخطأ من المكون DBImage لانه يقبل فقط الصور BITMAP (لا يقبل JPEG)
يمكن تحويل الصورة الى BMP قبل اضافتها للمكون DBImage
يمكن استعمال مكون Image (الذي يقبل JPEG) بدلا من المكون DBImage وتبرمج ما تبقى
إقتباس :هل يمكن الحفظ مباشرة بالجدول ؟
نعم
يمكن تحويل الصورة بالذاكرة دون المرور بملف وسيط كما بالمثال تحت

إقتباس :هل من طريقة للتحقق من اللاحقة ، إذا كانت Bmp

نعم
يمكن اخذ ثلاث احرف من اسم الملف ومقارنتها بBMP (طريقة سهلة لكنها غير فعالة 100%)
يمكن التعامل مع ملف الصورة مثل اي ملف وقراءة 2 bytes من البداية في حالة BMP يجب ان تكون BM وهي بصمة هذا النوع من الصور


خلاصة القول كمثال يمكن تغيير احد الازرار وكتابة شيئ مثل
PHP كود :
Var
  
Im: TPicture;
  
sExt,sFileName : String;
begin
  
if OpenPictureDialog2.Execute then Begin
    sFileName
:= OpenPictureDialog2.FileName;
    
sExt:= UpperCase(ExtractFileExt(sFileName));
    if (
sExt='.JPEG') or (sExt='.JPG') then Begin
      Im
:= TPicture.Create;
      
Im.LoadFromFile(sFileName);
      
DBImage3.Picture.Bitmap.Assign(Im.Graphic);
      
Im.Free;
    
End Else if (sExt='.BMP') then
    DBImage3
.Picture.LoadFromFile(sFileName)
    Else 
ShowMessage('unsupported image');
  
End;
end; 




استخدام النوع Graphique & Binaire في قاعدة لبيانات - nabilkeb - 21-02-2009

بــــــــــــارك الله فيك أخي عبد العزيز و وفقــــــــك لكل خيــــر .
اتضح الأمر شكــــــــــــــــــــــــرااااااااا جزيــــــــــــــــــــــــــــلا.