.

استخدام اجهزة السكانر والكاميرات واجهزة الفيديو لالتقــاط الصور الثابتة بلغة #C

IC534516

عند البحث عن هذا الموضوع في الانترنيت سوف تشاهد المبرمجين خاصة في المنتديات العربية تستخدم مكتبات معروفة غالبا ما تتواجد هذه المكتبات داخل ملفات قد تحتاج الى تسجيل في نظام الويندوز يدويا او برمجيا مثل: Twain32، Eztw32،

وعند التدقيق في هذه المكتبات تجد انها مستخدمة منذ فترة ليست بالقليلة منذ استخدام لغات قد اختفت بوقتها.

الا يوجد تحديث لهذا المسار؟ الا يرغب المبرمج باستقلالية برنامجه عن ملفات مثل هذه تتطلب من المستخدم النهائي مراعات تسجيلها في system32 او SYSwow64 ......؟ والسؤال الاخير هل ترغب بالتعرف على WIA ؟!

سوف تقوم بدورك .... ما هي WIA؟

الـ WIA (Windows Image Acquisition) هي منصة عمل تأتي مع الويندوز حسب الاصدارات (وحاليا هي في اصدار WIA2.0) تختص بأخذ واستيراد ومعالجة الصور الثابتة، حيث تقوم هذه المنصة بتوحيد اسلوب عبر البرامج والاجهزة بصورة سهلة وتنقل عبئ التعامل مع الاجهزة وتعاريفها الى الويندوز وليس الى البرنامج

https://msdn.microsoft.com/en-us/library/windows/desktop/ms630368%28v=vs.85%29.aspx

لدى هذه المنصة العديد من الفوائد لطرف المبرمج ولطرف مصنع الاجهزة ومستخدمي السكانر من بينها ما يهمنا:

1-  يقوم الويندوز بتسجيل شهادة WIA ويضمن المبرمج التعامل مع تعاريف متوافقة مع النظام

2-  بيئة التعامل مع تعاريف WIA أكثر متانة واستقرار لأنها تأتي محملة مع خدماتها

3-  يستطيع المبرمج تهيئة برنامجه للتشغيل مع تشغيل ازرار السكانر

4-  يوفر WIA العديد من العمليات والفلاتر على الصور مضمنة ضمن مكتباتها مثل امتدادات الصور وتدويرها والدقة و ....

مثال:

أجمل تطبيقات استخدمتها لهذه المكتبة على مايكروسوفت اكسس VBA لسهولتها وسرعتها الا ان المثال التالي سيكون لمبرمجي C# (VS2010)

1-  تأكد من ربط وتعريف السكانر لديك (لدي هنا hp 3in1 photosmart C4683)

2-  كون مشروع c# من نوع Console

3-  أضف reference في تبيويبة COM واختر

(Microsoft Windows Image Acquisition Library v2.0)

كما لدي في ويندوز 7

4-  في ملف Program.cs استدعي wia في مقطع using

using WIA;

5-  في الدالة الرئيسية   Main() الصق الكود التالي:

WIA.ImageFile wiaImg=new WIA.ImageFile();

              WIA.CommonDialog wiaDialog=new WIA.CommonDialog();

              WIA.Device device ;

           device=wiaDialog.ShowSelectDevice() ;

           device.Items[1].Properties["6146"].set_Value(1);          //4 is Black-white,gray is 2, color 1 (Color Intent)

              device.Items[1].Properties["6147"].set_Value(100);     //dots per inch/horizontal

           device.Items[1].Properties["6148"].set_Value(100);        //dots per inch/vertical

           device.Items[1].Properties["6149"].set_Value(0);          //x point where to start scan

           device.Items[1].Properties["6150"].set_Value(0);          //y-point where to start scan

           device.Items[1].Properties["6151"].set_Value(830);        //horizontal exent DPI x inches wide

           device.Items[1].Properties["6152"].set_Value(1167);       //vertical extent DPI x inches tall

             

              wiaImg=(WIA.ImageFile) device.Items[1].Transfer(WIA.FormatID.wiaFormatBMP);

             

              wiaImg.SaveFile("scannedImage100.png");

             

              wiaImg = null;

              device  = null;

 

 

6-  نفذ البرنامج لتحصل على نافذة السكانر وبعد الانتهاء منه سوف يتم الخزن بنفس المجلد في المشروع (يمكنك تغيير مكان الخزن! جرب ذلك)

ليكن هذا المثال بدايتك واستمتع بمميزات هذه المنصة واستخدم أكثر من حالة مثلا في كالة وجود فيدر للسكانر، في حالة التعامل مع أكثر من دقة، في حالة اظهار نافذة السكانر، في حالة استخدام ابعاد ثابتة للصورة، كيفية التعامل مع الرسائل والاخطاء.

 

اعداد المهندس سامر سامي

 

Joomla Templates - by Joomlage.com