"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > اكتشاف الصور الباهتة في Laravel

اكتشاف الصور الباهتة في Laravel

تم النشر بتاريخ 2024-11-04
تصفح:736

Blurry Image Detection in Laravel

تم نشر المقال من https://medium.com/@hafiqiqmal93/blurry-image-detection-in-laravel-4c91168e00f1

من الجوانب الحاسمة في تجربة المستخدم، فإن تخزين الصور الباهتة ينتقص بشكل كبير من جودة موقع الويب أو التطبيق. تتعمق هذه المقالة في كيفية اكتشاف الصور الباهتة وإدارتها باستخدام Laravel بمساعدة Python وOpenCV، مما يضمن بقاء وسائط التطبيق حادة وجذابة.

تحدي الصور الباهتة

الصور الباهتة هي أكثر من مجرد إزعاج بصري؛ يمكنهم تقويض احترافية موقع الويب الخاص بك أو تطبيقك. في التجارة الإلكترونية، أو قوائم العقارات، أو المعارض عبر الإنترنت، أو أي منصة تكون فيها جودة الصورة ذات أهمية قصوى، يعد ضمان الوضوح أمرًا ضروريًا. ويكمن التحدي في اكتشاف التشويش برمجياً.

لارافيل للإنقاذ

يمكن إقران Laravel مع Python لإنشاء حل فعال لهذه المشكلة. من خلال الاستفادة من التحقق من صحة ملف Laravel جنبًا إلى جنب مع برنامج Python النصي باستخدام OpenCV، يمكن للمطورين دمج اكتشاف التمويه بسلاسة في عمليات تحميل الملفات الخاصة بهم.

مفهوم الكشف عن التشويش

يتضمن اكتشاف الصور الباهتة تحليل دقة الصورة. ويتم ذلك عادةً باستخدام عامل Laplacian، وهو أداة رياضية تستخدم في معالجة الصور. يقيس عامل Laplacian المعدل الذي تتغير به كثافة البكسل، ويشير التباين الأقل لعامل Laplacian إلى صورة أكثر ضبابية.

التنفيذ في لارافيل

في Laravel، يمكننا إنشاء قاعدة تحقق مخصصة للتحقق من عدم وضوح الصورة. تنفذ هذه القاعدة برنامج Python النصي الذي يستخدم عامل Laplacian لتحديد مدى وضوح الصورة. دعونا نحلل العملية:

تثبيت OpenCV بايثون:

تثبيت PIP (أوبونتو):


sudo apt install python3-pip


تثبيت OpenCV باستخدام PIP


pip3 install opencv-python


قد ترغب في التفكير في التثبيت ضمن مستخدم **www-data** إذا كان تطبيقك يعمل تحت **www-data**. إذا كانت الإجابة بنعم، فاتبع الأوامر أدناه لتثبيت


sudo mkdir /var/www/.local
sudo mkdir /var/www/.cache
sudo chown www-data.www-data /var/www/.local
sudo chown www-data.www-data /var/www/.cache
sudo -H -u www-data pip3 install opencv-python




إنشاء برنامج بايثون النصي



import sys
import cv2

def get_image_laplacian_value(image_path):
image = cv2.imread(image_path)
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
return cv2.Laplacian(gray_image, cv2.CV_64F).var()

if name == "main":
if len(sys.argv) != 2:
sys.exit(1)
image_path = sys.argv[1]
laplacian_value = get_image_laplacian_value(image_path)
print(laplacian_value)




إنشاء قاعدة Laravel:



class ImageBlurDetectionRule implements ValidationRule
{
public function validate(string $attribute, mixed $value, Closure $fail): void
{
if ( ! $value instanceof UploadedFile) {
return;
}
// ignore if not image
if ('' !== $value->getPath() && ! in_array($value->guessExtension(), ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'svg', 'webp'])) {
return;
}
// get real path for the file
$path = $value->getRealPath();
$command = escapeshellcmd(config('image.python_path') . " blur_detection.py '{$path}'");
$result = Process::path(base_path('scripts'))->run($command);
if ( ! $result->successful()) {
return;
}
if (trim($result->output()) $fail(__('Blur image are not accepted. Please make sure your :attribute image is clearly visible.'));
}
}
}




كيف يعمل

يعمل تكامل Laravel مع برنامج Python لاكتشاف التمويه بطريقة سلسة، مما يوفر أسلوبًا متطورًا ومباشرًا لضمان جودة الصورة. وإليك كيفية سير العملية:

تحميل الصورة

عندما يقوم المستخدم بتحميل صورة إلى تطبيق Laravel، يتم تشغيل قاعدة التحقق المخصصة (ImageBlurDetectionRule).

تنفيذ قاعدة التحقق من الصحة

تتحقق هذه القاعدة أولاً مما إذا كان الملف الذي تم تحميله عبارة عن صورة بالفعل عن طريق التحقق من امتداده. إذا لم يكن الملف صورة، فستتوقف العملية هنا.

استدعاء البرنامج النصي بايثون

إذا كان الملف عبارة عن صورة، فستستدعي القاعدة نص Python النصي، Blur_detection.py. يتم تمرير مسار الصورة إلى هذا البرنامج النصي كوسيطة سطر الأوامر.

معالجة الصور في بايثون:

  • يستخدم برنامج Python النصي OpenCV للتعامل مع تحليل الصور.
  • يقرأ البرنامج النصي الصورة ويحولها إلى تدرج رمادي. يتيح هذا التبسيط إجراء تحليل أكثر وضوحًا دون تعقيد الألوان.
  • ثم يتم تطبيق عامل Laplacian على الصورة ذات التدرج الرمادي. عامل Laplacian هو أداة رياضية تسلط الضوء على مناطق التغير السريع في الكثافة، والتي عادة ما تكون حواف في الصورة. تحتوي الصور الباهتة على حواف أقل وأقل تحديدًا، مما يؤدي إلى تباين أقل في اللابلاتسي.

قياس التشويش

يحسب البرنامج النصي تباين Laplacian، والذي يعمل كمقياس لوضوح الصورة. يشير التباين الأقل إلى صورة أكثر ضبابية.

تقييم النتيجة:

  • يقوم البرنامج النصي بإخراج التباين اللابلاسي كقيمة عددية.
  • بالعودة إلى Laravel، تلتقط قاعدة التحقق هذه المخرجات وتتحقق مما إذا كانت القيمة أقل من الحد المحدد مسبقًا. يحدد هذا الحد ما إذا كانت الصورة تعتبر حادة بدرجة كافية.

ردود الفعل التحقق من الصحة

إذا كانت الصورة ضبابية جدًا (على سبيل المثال: التباين اللابلاسي أقل من العتبة)، تفشل قاعدة التحقق من الصحة ويتلقى المستخدم رسالة تشير إلى أن الصورة ضبابية ويجب التحقق منها.

تحسين تجربة المستخدم

من خلال منع تحميل الصور الباهتة منخفضة الجودة، يعمل هذا الحل على تحسين تجربة المستخدم بشكل عام. يُطلب من المستخدمين تحميل صور واضحة وعالية الجودة فقط، مما يحافظ على المستوى المرئي للتطبيق.


هذه العملية قابلة للتخصيص بدرجة كبيرة. يمكن للمطورين ضبط حد التشويش وفقًا للاحتياجات المحددة لتطبيقهم. لاحظ أن العتبة تعتمد على ملاحظتك. للاستخدام المسبق، قد تحتاج إلى ML لتحديد العتبة. علاوة على ذلك، فإن دمج Python في Laravel يسمح بمزيد من التوسع في تقنيات معالجة الصور الأكثر تقدمًا، مما يوفر حلاً مرنًا وقويًا لإدارة جودة الصورة.

التطبيق العملي

يؤدي دمج هذه الوظيفة في تطبيق Laravel الخاص بك إلى تحسين تجربة المستخدم عن طريق منع تحميل الصور منخفضة الجودة. يعد هذا مفيدًا بشكل خاص في السيناريوهات التي يكون فيها وضوح الصورة أمرًا بالغ الأهمية، مثل المحافظ عبر الإنترنت أو كتالوجات المنتجات أو صور الملف الشخصي للمستخدم.

التخصيص والمرونة

يمكن تعديل حد التشويش وفقًا للاحتياجات المحددة. بالإضافة إلى ذلك، يوفر دمج Python في Laravel المرونة لدمج تقنيات معالجة الصور الأكثر تقدمًا إذا لزم الأمر.

خاتمة

يعد الجمع بين Laravel وPython لاكتشاف الصور الباهتة حلاً قويًا. فهو لا يضمن الجودة المرئية لتطبيقك فحسب، بل يعزز أيضًا تجربة المستخدم الشاملة. ومن خلال هذا النهج، يمكن للمطورين الحفاظ على معايير عالية لمحتوى الوسائط، مما يساهم في وجود أكثر صقلًا واحترافية عبر الإنترنت.


هل حاولت تنفيذ هذا الحل في مشروع Laravel الخاص بك؟ شارك تجاربك وأي أفكار اكتسبتها في التعليقات أدناه. دعونا نستمر في رفع معايير تطوير الويب معًا!

بيان الافراج تم نشر هذه المقالة على: https://dev.to/afiqiqmal/blurry-image-detection-in-laravel-4d8d?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3