يتم إعطاؤك مقتطف التعليمات البرمجية الذي يعد جزءًا من تعريف الفئة. يحتوي الفصل على الطرق التالية:

1. `__init__(self, x1, y1, x2, y2)`: المنشئ الذي يقوم بتهيئة سمات الفئة `crop_x1` و`crop_y1` و`crop_x2` و`crop_y2`. يستغرق الأمر أربع معلمات - `x1`، و`y1`، و`x2`، و`y2`، والتي تمثل إحداثيات المستطيل.

2. `disable_crop(self)`: طريقة تقوم بتعيين قيم `crop_x1` و`crop_y1` و`crop_x2` و`crop_y2` على `None`، مما يؤدي إلى تعطيل ميزة الاقتصاص بشكل فعال.

3. `post_process_image(self, img)`: طريقة تأخذ صورة `img` كمعلمة وتجري بعض المعالجة اللاحقة عليها.

في الطريقة __init__`، إذا لم تكن `x2` هي `None`، فسيتم تعيين السمة `crop_x2` على قيمة `x2`. بخلاف ذلك، يتم ضبطه على `x1 + width`. وبالمثل، إذا لم تكن قيمة `y2` `None`، فسيتم تعيين السمة `crop_y2` على قيمة `y2`. بخلاف ذلك، يتم ضبطه على `y1 + height`.

مهمتك هي تنفيذ طريقة `post_process_image`.

قم بتنفيذ طريقة `post_process_image` بحيث تقوم بالخطوات التالية:
1. تحقق من تمكين ميزة الاقتصاص من خلال التحقق مما إذا كانت أي من سمات `crop_x1` و`crop_y1` و`crop_x2` و`crop_y2` ليست `لا شيء`. إذا كانت جميعها `لا شيء`، قم بإرجاع الصورة الأصلية `img` دون أي تعديلات.

2. في حالة تمكين الاقتصاص، قم بقص الصورة `img` باستخدام قيم `crop_x1` و`crop_y1` و`crop_x2` و`crop_y2` كإحداثيات المستطيل المراد اقتصاصه. يجب أن تتضمن الصورة التي تم اقتصاصها جميع وحدات البكسل الموجودة داخل المستطيل، أي بما في ذلك الحدود اليمنى والسفلية.

3. وأخيرًا، قم بإرجاع الصورة التي تم اقتصاصها.

تحتاج إلى كتابة الكود الخاص بطريقة `post_process_image`.
{"source": "argilla/DistiCoder-dpo-binarized", "kind": "synthetic", "evolved_from": null}