عند الحاجة في تطبيق أو برنامج معين إلى تخزين الصور ، و مع امكانية استخدام النوع Binaire أو Gphique . في جدول قواعد البيانات .
- استخدمت الأول تارة و الثاني تارة أخرى ، و لم ألحظ أي فرق من حيث الاستعمال مجملا ، أو من حيث حجم التخزين مثلا - ما هو الفرق بينهما في هذه الحالة ؟ و أيهما أستخدم ؟
حقل من النوع Graphic يحوي حقل من نوع Bitmap اي صورة وليس اي صورة ونما فقط عائلة BMP
جرب تخزين صورة GIF، PNG او JPEG تفهم الامر
حقل من النوع Binary يحوي اي ملف من اي نوع او Stream سواء صورة او نص او صوت او...
ان كنت تخزن صور استخدم Graphic مع تحويلها الى Bitmap قبل تخزينها غير ذلك استخدم Binary
والسلام عليكم
بارك الله فيك أخي عبد العزيز ، لقد تبين الفرق بين النوعين.
في المرفق جدول من ثلاثة حقول : الأول حقل نصي - الثاني جرافيك - الثالث بينار.
و فيه : تحويل صورة Jpg إلى Bmp و حفظها على القرص.
إقتباس : حقل من النوع Binary يحوي اي ملف من اي نوع
و رغم ( كما تقدمت بارك الله فيك) أن الحقل الثالث نوع بينار ، إلا أنه يظهر رسالة الخطأ عند محاولة ادخال صورة Jpg ، أي أنه مثل الحقل جرافيك ، لا يقبل إلا Bmp . فما هو السبب ؟
السؤال الثاني : يمكن التحويل إلى Bmp ثم الإستدعاء للحفظ بالجدول عن طريق الحوار أو مباشرة ، و في الحالتين الحفظ أول بمسار معين . هل يمكن الحفظ مباشرة بالجدول ؟
الثالث : الطريقة (السالفة) المرفقة تجبرني على و ضع زرين ، واحد للتخزين المباشر إذا كانت الصورة Bmp ، الثاني للتحويل إذا كانت Jpg ثم التخزين.
[COLOR="#0000ff"]هل من طريقة للتحقق من اللاحقة ، إذا كانت Bmp التخزين بالجدول مباشرة ، و إلا التحويل ثم التخزين
[/COLOR] ؟
عذرا على الإطالة ، و بارك الله فيك عبد العزيز خصوصا وفيكم جميعا عمومــا
إقتباس :الحقل الثالث نوع بينار ، إلا أنه يظهر رسالة الخطأ عند محاولة ادخال صورة 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;
بــــــــــــارك الله فيك أخي عبد العزيز و وفقــــــــك لكل خيــــر .
اتضح الأمر شكــــــــــــــــــــــــرااااااااا جزيــــــــــــــــــــــــــــلا.