Article originated from https://medium.com/@hafiqiqmal93/blurry-image-detection-in-laravel-4c91168e00f1
Crucial aspect of user experience, storing blurry images is significantly detract from the quality of a website or application. This article delves into how you can detect and manage blurry images using Laravel with help of Python and OpenCV, ensuring the application’s media remains sharp and engaging.
The Challenge of Blurry Images
Blurry images are more than just a visual nuisance; they can undermine the professionalism of your website or app. In e-commerce, real estate listings, online galleries or any platform where image quality is paramount, ensuring clarity is essential. The challenge lies in detecting blurriness programmatically.
Laravel to the Rescue
Laravel can be paired with Python to create an effective solution for this problem. By leveraging Laravel’s file validation alongside a Python script utilizing OpenCV, developers can seamlessly integrate blur detection into their file upload processes.
Blurriness Detection Concept
The detection of blurry images involves analyzing the image’s sharpness. This is typically done using the Laplacian operator, a mathematical tool used in image processing. The Laplacian operator measures the rate at which pixel intensity changes, and a lower variance of the Laplacian indicates a blurrier image.
Implementing in Laravel
In Laravel, we can create a custom validation rule to check for image blurriness. This rule executes a Python script that uses the Laplacian operator to determine the sharpness of the image. Let’s break down the process:
Installation OpenCV Python:
Install PIP (Ubuntu) :
sudo apt install python3-pip
Install OpenCV using PIP
pip3 install opencv-python
You might want to consider to install under **www-data** user if your application runs under **www-data**. If Yes, follow below commands to install
<p>sudo mkdir /var/www/.local<br> sudo mkdir /var/www/.cache<br> sudo chown www-data.www-data /var/www/.local<br> sudo chown www-data.www-data /var/www/.cache<br> sudo -H -u www-data pip3 install opencv-python</p>
Create Python Script
<p>import sys<br> import cv2</p> <p>def get_image_laplacian_value(image_path):<br> image = cv2.imread(image_path)<br> gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)<br> return cv2.Laplacian(gray_image, cv2.CV_64F).var()</p> <p>if <strong>name</strong> == "<strong>main</strong>":<br> if len(sys.argv) != 2:<br> sys.exit(1)<br> image_path = sys.argv[1]<br> laplacian_value = get_image_laplacian_value(image_path)<br> print(laplacian_value)</p>
Create Laravel Rule:
<p>class ImageBlurDetectionRule implements ValidationRule<br> {<br> public function validate(string $attribute, mixed $value, Closure $fail): void<br> {<br> if ( ! $value instanceof UploadedFile) {<br> return;<br> }<br> // ignore if not image<br> if ('' !== $value->getPath() && ! in_array($value->guessExtension(), ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'svg', 'webp'])) {<br> return;<br> }<br> // get real path for the file<br> $path = $value->getRealPath();<br> $command = escapeshellcmd(config('image.python_path') . " blur_detection.py '{$path}'");<br> $result = Process::path(base_path('scripts'))->run($command);<br> if ( ! $result->successful()) {<br> return;<br> }<br> if (trim($result->output()) $fail(__('Blur image are not accepted. Please make sure your :attribute image is clearly visible.'));<br> }<br> }<br> }</p>
How It Works
The integration of Laravel with a Python script for blur detection works in a seamless manner, offering a sophisticated yet straightforward approach to ensuring image quality. Here’s how the process unfolds:
Image Upload
When a user uploads an image to the Laravel application, the custom validation rule (ImageBlurDetectionRule) is triggered.
Validation Rule Execution
This rule first checks if the uploaded file is indeed an image by verifying its extension. If the file is not an image, the process stops here.
Python Script Invocation
If the file is an image, the rule then calls a Python script, blur_detection.py. The image's path is passed to this script as a command-line argument.
Image Processing in Python:
- The Python script uses OpenCV to handle the image analysis.
- The script reads the image and converts it into grayscale. This simplification allows for more straightforward analysis without the complexity of color.
- It then applies the Laplacian operator to the grayscale image. The Laplacian operator is a mathematical tool that highlights areas of rapid intensity change, which are typically edges in an image. Blurry images have fewer and less defined edges, resulting in a lower variance of the Laplacian.
Blurriness Measurement
The script calculates the variance of the Laplacian, which serves as a measure of the image’s sharpness. A lower variance indicates a blurrier image.
Result Evaluation:
- The script outputs the Laplacian variance as a numerical value.
- Back in Laravel, the validation rule captures this output and checks if the value falls below a predefined threshold. This threshold determines whether an image is considered sharp enough.
Validation Feedback
If the image is too blurry (ex: the Laplacian variance is below the threshold), the validation rule fails and the user receives a message indicating that the image is blurry and should be checked.
User Experience Enhancement
By preventing the upload of low-quality, blurry images, this solution enhances the overall user experience. Users are prompted to only upload clear, high-quality images, which maintains the visual standard of the application.
Proses ini sangat boleh disesuaikan. Pembangun boleh melaraskan ambang untuk kekaburan mengikut keperluan khusus aplikasi mereka. Ambil perhatian bahawa, ambang adalah berdasarkan pemerhatian anda. Untuk penggunaan awal, mungkin memerlukan ML untuk menentukan ambang. Selain itu, penyepaduan Python dalam Laravel membolehkan pengembangan selanjutnya ke dalam teknik pemprosesan imej yang lebih maju, menawarkan penyelesaian yang fleksibel dan mantap untuk mengurus kualiti imej.
Aplikasi Praktikal
Menggabungkan fungsi ini dalam aplikasi Laravel anda meningkatkan pengalaman pengguna dengan menghalang muat naik imej berkualiti rendah. Ini amat berguna dalam senario di mana kejelasan imej adalah kritikal, seperti portfolio dalam talian, katalog produk atau gambar profil pengguna.
Penyesuaian dan Fleksibiliti
Ambang untuk kekaburan boleh dilaraskan mengikut keperluan khusus. Selain itu, penyepaduan Python dalam Laravel menawarkan fleksibiliti untuk menggabungkan teknik pemprosesan imej yang lebih maju jika diperlukan.
Kesimpulan
Gabungan Laravel dan Python untuk mengesan imej kabur adalah penyelesaian yang berkuasa. Ia bukan sahaja memastikan kualiti visual aplikasi anda tetapi juga meningkatkan keseluruhan pengalaman pengguna. Dengan pendekatan ini, pembangun boleh mengekalkan standard yang tinggi untuk kandungan media, menyumbang kepada kehadiran dalam talian yang lebih digilap dan profesional.
Sudahkah anda cuba melaksanakan penyelesaian ini dalam projek Laravel anda? Kongsi pengalaman anda dan sebarang cerapan yang anda perolehi dalam ulasan di bawah. Mari kita terus meningkatkan standard pembangunan web bersama-sama!
Atas ialah kandungan terperinci Pengesanan Imej Kabur dalam Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Python cemerlang dalam permainan dan pembangunan GUI. 1) Pembangunan permainan menggunakan pygame, menyediakan lukisan, audio dan fungsi lain, yang sesuai untuk membuat permainan 2D. 2) Pembangunan GUI boleh memilih tkinter atau pyqt. TKInter adalah mudah dan mudah digunakan, PYQT mempunyai fungsi yang kaya dan sesuai untuk pembangunan profesional.

Python sesuai untuk sains data, pembangunan web dan tugas automasi, manakala C sesuai untuk pengaturcaraan sistem, pembangunan permainan dan sistem tertanam. Python terkenal dengan kesederhanaan dan ekosistem yang kuat, manakala C dikenali dengan keupayaan kawalan dan keupayaan kawalan yang mendasari.

Anda boleh mempelajari konsep pengaturcaraan asas dan kemahiran Python dalam masa 2 jam. 1. Belajar Pembolehubah dan Jenis Data, 2.

Python digunakan secara meluas dalam bidang pembangunan web, sains data, pembelajaran mesin, automasi dan skrip. 1) Dalam pembangunan web, kerangka Django dan Flask memudahkan proses pembangunan. 2) Dalam bidang sains data dan pembelajaran mesin, numpy, panda, scikit-learn dan perpustakaan tensorflow memberikan sokongan yang kuat. 3) Dari segi automasi dan skrip, Python sesuai untuk tugas -tugas seperti ujian automatik dan pengurusan sistem.

Anda boleh mempelajari asas -asas Python dalam masa dua jam. 1. Belajar pembolehubah dan jenis data, 2. Struktur kawalan induk seperti jika pernyataan dan gelung, 3 memahami definisi dan penggunaan fungsi. Ini akan membantu anda mula menulis program python mudah.

Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam masa 10 jam? Sekiranya anda hanya mempunyai 10 jam untuk mengajar pemula komputer beberapa pengetahuan pengaturcaraan, apa yang akan anda pilih untuk mengajar ...

Cara mengelakkan dikesan semasa menggunakan fiddlerevery di mana untuk bacaan lelaki-dalam-pertengahan apabila anda menggunakan fiddlerevery di mana ...

Memuatkan Fail Pickle di Python 3.6 Kesalahan Laporan Alam Sekitar: ModulenotFoundError: Nomodulenamed ...


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

Dreamweaver Mac版
Alat pembangunan web visual

Pelayar Peperiksaan Selamat
Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.