تم نشر المقال من https://medium.com/@hafiqiqmal93/blurry-image-detection-in-laravel-4c91168e00f1
من الجوانب الحاسمة في تجربة المستخدم، فإن تخزين الصور الباهتة ينتقص بشكل كبير من جودة موقع الويب أو التطبيق. تتعمق هذه المقالة في كيفية اكتشاف الصور الباهتة وإدارتها باستخدام Laravel بمساعدة Python وOpenCV، مما يضمن بقاء وسائط التطبيق حادة وجذابة.
الصور الباهتة هي أكثر من مجرد إزعاج بصري؛ يمكنهم تقويض احترافية موقع الويب الخاص بك أو تطبيقك. في التجارة الإلكترونية، أو قوائم العقارات، أو المعارض عبر الإنترنت، أو أي منصة تكون فيها جودة الصورة ذات أهمية قصوى، يعد ضمان الوضوح أمرًا ضروريًا. ويكمن التحدي في اكتشاف التشويش برمجياً.
يمكن إقران Laravel مع Python لإنشاء حل فعال لهذه المشكلة. من خلال الاستفادة من التحقق من صحة ملف Laravel جنبًا إلى جنب مع برنامج Python النصي باستخدام OpenCV، يمكن للمطورين دمج اكتشاف التمويه بسلاسة في عمليات تحميل الملفات الخاصة بهم.
يتضمن اكتشاف الصور الباهتة تحليل دقة الصورة. ويتم ذلك عادةً باستخدام عامل Laplacian، وهو أداة رياضية تستخدم في معالجة الصور. يقيس عامل Laplacian المعدل الذي تتغير به كثافة البكسل، ويشير التباين الأقل لعامل Laplacian إلى صورة أكثر ضبابية.
في Laravel، يمكننا إنشاء قاعدة تحقق مخصصة للتحقق من عدم وضوح الصورة. تنفذ هذه القاعدة برنامج Python النصي الذي يستخدم عامل Laplacian لتحديد مدى وضوح الصورة. دعونا نحلل العملية:
تثبيت 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 cv2def 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)
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. يتم تمرير مسار الصورة إلى هذا البرنامج النصي كوسيطة سطر الأوامر.
يحسب البرنامج النصي تباين Laplacian، والذي يعمل كمقياس لوضوح الصورة. يشير التباين الأقل إلى صورة أكثر ضبابية.
إذا كانت الصورة ضبابية جدًا (على سبيل المثال: التباين اللابلاسي أقل من العتبة)، تفشل قاعدة التحقق من الصحة ويتلقى المستخدم رسالة تشير إلى أن الصورة ضبابية ويجب التحقق منها.
من خلال منع تحميل الصور الباهتة منخفضة الجودة، يعمل هذا الحل على تحسين تجربة المستخدم بشكل عام. يُطلب من المستخدمين تحميل صور واضحة وعالية الجودة فقط، مما يحافظ على المستوى المرئي للتطبيق.
هذه العملية قابلة للتخصيص بدرجة كبيرة. يمكن للمطورين ضبط حد التشويش وفقًا للاحتياجات المحددة لتطبيقهم. لاحظ أن العتبة تعتمد على ملاحظتك. للاستخدام المسبق، قد تحتاج إلى ML لتحديد العتبة. علاوة على ذلك، فإن دمج Python في Laravel يسمح بمزيد من التوسع في تقنيات معالجة الصور الأكثر تقدمًا، مما يوفر حلاً مرنًا وقويًا لإدارة جودة الصورة.
يؤدي دمج هذه الوظيفة في تطبيق Laravel الخاص بك إلى تحسين تجربة المستخدم عن طريق منع تحميل الصور منخفضة الجودة. يعد هذا مفيدًا بشكل خاص في السيناريوهات التي يكون فيها وضوح الصورة أمرًا بالغ الأهمية، مثل المحافظ عبر الإنترنت أو كتالوجات المنتجات أو صور الملف الشخصي للمستخدم.
يمكن تعديل حد التشويش وفقًا للاحتياجات المحددة. بالإضافة إلى ذلك، يوفر دمج Python في Laravel المرونة لدمج تقنيات معالجة الصور الأكثر تقدمًا إذا لزم الأمر.
يعد الجمع بين Laravel وPython لاكتشاف الصور الباهتة حلاً قويًا. فهو لا يضمن الجودة المرئية لتطبيقك فحسب، بل يعزز أيضًا تجربة المستخدم الشاملة. ومن خلال هذا النهج، يمكن للمطورين الحفاظ على معايير عالية لمحتوى الوسائط، مما يساهم في وجود أكثر صقلًا واحترافية عبر الإنترنت.
هل حاولت تنفيذ هذا الحل في مشروع Laravel الخاص بك؟ شارك تجاربك وأي أفكار اكتسبتها في التعليقات أدناه. دعونا نستمر في رفع معايير تطوير الويب معًا!
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3