الشبكة العربية لمطوري الألعاب

مبتدئ  maya مشاركة 11

السلام عليكم
لقد افترضت هذا ايضا لذا اضفتها  لكن المشكلة لدي مكتبات تستخدم نفس المتغيرات التي تستخدمها مكتبتة windows.h  فاذا حذفت هذه المكتبات يعمل الكود و اذا لم احذفها  و اضفت windows.h   ياتني خطا انني ابدل في متغيرات الويندوز و كلمة FAR  لم افهم الاخطاء جيدا

خبير مدير وسام البهنسي مشاركة 12

حسناً، يمكننا أيضاً حل المسألة بسهولة. فقط انقلي تعريف الإجراء إلى ملف CPP مستقل، وابدئيه بتضمين كل من ملف windows.h وملف gl.h. أما في ملف برنامجك الأساسي وحيث تودين استدعاء الإجراء، فقومي بإضافة السطر الآتي في مكان ما في البداية:


bool CaptureScreenToBMPFile(const char *pszFile,int width,int height);


ثم استدعي الإجراء بشكل اعتيادي.

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

مبتدئ  maya مشاركة 13

السلام عليكم
شكرا لك
سافعل هذا انها فكرة لم تخطر لي

مبتدئ  maya مشاركة 14

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

خبير مدير وسام البهنسي مشاركة 15

لا توجد طريقة مباشرة دون استخدام مكتبات متقدمة، فصيغة JPG معقدة وليست مجرد سرد للقيم اللونية للبكسلات كما هي صيغة BMP.
 
تستطيعين استخدام مكتبة libJPEG الأصلية لحفظ الملفات، أو مكتبة أخرى مفتوحة المصدر كـ DevIL. كما أن مكتبة D3DX المصاحبة لدايركت ثري دي قادرة على أخذ لقطات وحفظها بصيغة JPG بنداء واحد فقط.
 
كما أن +GDI تدعم حفظ الملفات بصيغة JPG بستة أسطر فقط تقريباً، لكن هذه المكتبة غير متوفرة في الإصدارات القديمة من فيجوال ستوديو (أعتقد أنك ما زلت تستخدمين الإصدار السادس؟).

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

مبتدئ  maya مشاركة 16

السلام عليكم
للاسف نعم مت زلت استعمل الاصدار السادس
لقد استخدمت من قيل مكتبة libjpeg  و ذلك في الاكساء
بحيث كنت اطبق الاكساء على الصور من هذا النوع
لكن الكود الذي يقوم بقراءة الصورة كبير نوعا ما
سابحث عن كيفية الاستفادة من هذه المكتبة في حفظ الصور

خبير مدير وسام البهنسي مشاركة 17

وفي 02/صفر/1431 02:50 م، ظهر شبح ابتسامة على وجه maya وهو يقول:

لقد استخدمت من قيل مكتبة libjpeg  و ذلك في الاكساء

حسناً، إن كنتِ قد تعاملتِ معها من قبل ولا تمانعين من استخدامها في المشروع فيمكننا بسهولة تعديل كود الحفظ السابق ليعمل مع المكتبة. 
الملف المرفق يحوي الإجراء المعدل، والذي يختلف عن إجراء BMP في أنه يطلب البكسلات بترتيب RGB بدلاً من BGR. بقية التعديلات هي ميكانيكيات لتلقيم مكتبة JPEG سطور الصورة سطراً سطراً لضغطها وكتابتها في الملف المحدد.
 
لاحظي أيضاً أننا نستخدم مكتبة C النظامية الآن لكتابة الملفات بدلاً من Win32. هذا يعني أننا سنحتاج لإدراج ملفي الترويسة الآتيين قبل استخدام هذا الإجراء:

#include  // من أجل إجراء كتابة الملف
#include "jpeglib.h" // JPEG الملف الرئيس في مكتبة
 
والباقي كما هو...
 
آه عفواً، ملاحظة أخيرة... يمكنك تعديل جودة الضغط على حساب حجم الملف وذلك من خلال تعديل قيمة المتغير quality والتي يجب أن تكون ضمن المجال 0 إلى 100، حيث 0 تعني أسوأ جودة وأصغر حجم، بينما 100 هي الجودة القصوى والحجم الأكبر.
 
بالتوفيق.

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

مبتدئ  maya مشاركة 18

السلام عليكم
اخي وسام لقد حاولت ان اضيف الكود الذي في المرفقات لكن عند التنفيذ
تاتيني هذه النافذة هي في المرفقات
لقد حتوات تعديا عرض نافذة و ارتفاعها لكن دون فائدة


خبير مدير وسام البهنسي مشاركة 19

هذا الخطأ يعني أن لديكِ مشكلة في مكتبة JPEG التي تستخدمينها، فأنت تستخدمين ملفات مختلطة من إصدارات مختلفة للمكتبة، أو تستخدمين ملفات غير معدة للاستخدام في فيجوال سي 6.
 
الحل الأمثل هو بناء المكتبة يدوياً، وهذا ما أقوم به عادة. فأنا أقوم بتحميل المكتبة من موقعها الرسمي، ثم أدرج كافة ملفاتها في المشروع لدي. هكذا تتم ترجمة المكتبة وكأنها جزء من المشروع.
 
للأسف لا أستطيع أن أعينك شخصياً بحل مباشر، فأنا لا أملك نسخة من فيجوال سي 6 (أستخدم فيجوال ستوديو 2008 - وتوجد منه نسخة مجانية بالمناسبة). لكن إليك الخطوات:
 
* تحميل المكتبة من موقعها الرسمي: http://www.ijg.org/files/jpegsr8.zip
 
* فتح كافة الملفات ووضعها مع المشروع.
 
* تسمية الملف jconfig.vc ليصبح jconfig.h  . بهذه الطريقة نخبر المكتبة أننا سنستخدمها من فيجوال سي.
 
* إضافة كافة ملفات المكتبة بامتداد  (c.*)  إلى المشروع في فيجوال ستوديو كي تتم ترجمتها مع بقية الملفات. يجب أن يتم استثناء بعض الملفات وهي ملفات الأمثلة - هذه قائمة بأسمائها:



الآن يجب أن تستطيعي بناء برنامجك بشكل صحيح باذن الله.

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

مبتدئ  maya مشاركة 20

السلام عليكم
ساجرب هذا الحل
لكن لقد عملت بها من قبل و لم تظهر لي المشاكل
احتمال انني نقصت مكتبة او ما شابه ها هي المكتبات التي و ضعتها الخاصة في jpeglib


#include 
#define HAVE_BOOLEAN
#include 
#include