Artikel stammt von https://medium.com/@hafiqiqmal93/blurry-image-detection-in-laravel-4c91168e00f1
Das Speichern verschwommener Bilder ist ein entscheidender Aspekt der Benutzererfahrung und beeinträchtigt die Qualität einer Website oder Anwendung erheblich. In diesem Artikel wird erläutert, wie Sie mit Laravel mithilfe von Python und OpenCV verschwommene Bilder erkennen und verwalten können, um sicherzustellen, dass die Medien der Anwendung scharf und ansprechend bleiben.
Unscharfe Bilder sind mehr als nur ein optisches Ärgernis; Sie können die Professionalität Ihrer Website oder App untergraben. Im E-Commerce, bei Immobilienangeboten, in Online-Galerien oder auf anderen Plattformen, bei denen die Bildqualität von größter Bedeutung ist, ist die Gewährleistung von Klarheit von entscheidender Bedeutung. Die Herausforderung besteht darin, Unschärfe programmgesteuert zu erkennen.
Laravel kann mit Python kombiniert werden, um eine effektive Lösung für dieses Problem zu schaffen. Durch die Nutzung der Dateivalidierung von Laravel zusammen mit einem Python-Skript unter Verwendung von OpenCV können Entwickler die Unschärfeerkennung nahtlos in ihre Datei-Upload-Prozesse integrieren.
Zur Erkennung verschwommener Bilder gehört die Analyse der Bildschärfe. Dies erfolgt typischerweise mithilfe des Laplace-Operators, einem mathematischen Werkzeug, das in der Bildverarbeitung verwendet wird. Der Laplace-Operator misst die Rate, mit der sich die Pixelintensität ändert, und eine geringere Varianz des Laplace-Operators weist auf ein unschärferes Bild hin.
In Laravel können wir eine benutzerdefinierte Validierungsregel erstellen, um die Bildunschärfe zu prüfen. Diese Regel führt ein Python-Skript aus, das den Laplace-Operator verwendet, um die Schärfe des Bildes zu bestimmen. Lassen Sie uns den Prozess aufschlüsseln:
PIP (Ubuntu) installieren:
sudo apt install python3-pip
OpenCV mit PIP installieren
pip3 install opencv-python
Möglicherweise sollten Sie die Installation unter dem Benutzer **www-data** in Betracht ziehen, wenn Ihre Anwendung unter **www-data** ausgeführt wird. Wenn ja, befolgen Sie die folgenden Befehle zur Installation
<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>
<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>
<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()) < 100) {<br> $fail(__('Blur image are not accepted. Please make sure your :attribute image is clearly visible.'));<br> }<br> }<br> }</p>
Die Integration von Laravel mit einem Python-Skript zur Unschärfeerkennung funktioniert nahtlos und bietet einen anspruchsvollen und dennoch unkomplizierten Ansatz zur Sicherstellung der Bildqualität. So läuft der Prozess ab:
Wenn ein Benutzer ein Bild in die Laravel-Anwendung hochlädt, wird die benutzerdefinierte Validierungsregel (ImageBlurDetectionRule) ausgelöst.
Diese Regel prüft zunächst, ob es sich bei der hochgeladenen Datei tatsächlich um ein Bild handelt, indem sie deren Erweiterung überprüft. Wenn es sich bei der Datei nicht um ein Bild handelt, stoppt der Vorgang hier.
Wenn es sich bei der Datei um ein Bild handelt, ruft die Regel dann ein Python-Skript auf, „blur_detection.py“. Der Pfad des Bildes wird als Befehlszeilenargument an dieses Skript übergeben.
Das Skript berechnet die Varianz des Laplace-Operators, die als Maß für die Bildschärfe dient. Eine geringere Varianz weist auf ein unschärferes Bild hin.
Wenn das Bild zu unscharf ist (z. B. die Laplace-Varianz liegt unter dem Schwellenwert), schlägt die Validierungsregel fehl und der Benutzer erhält eine Meldung, dass das Bild unscharf ist und überprüft werden sollte.
Indem diese Lösung das Hochladen minderwertiger, verschwommener Bilder verhindert, verbessert sie das allgemeine Benutzererlebnis. Benutzer werden aufgefordert, nur klare, qualitativ hochwertige Bilder hochzuladen, um den visuellen Standard der Anwendung beizubehalten.
이 프로세스는 고도로 맞춤설정 가능합니다. 개발자는 애플리케이션의 특정 요구 사항에 따라 흐림 임계값을 조정할 수 있습니다. 임계값은 관찰을 기반으로 합니다. 사전 사용의 경우 임계값을 결정하기 위해 ML이 필요할 수 있습니다. 또한 Laravel에 Python을 통합하면 고급 이미지 처리 기술로 더욱 확장할 수 있어 이미지 품질 관리를 위한 유연하고 강력한 솔루션을 제공할 수 있습니다.
Laravel 애플리케이션에 이 기능을 통합하면 낮은 품질의 이미지 업로드를 방지하여 사용자 경험이 향상됩니다. 이는 온라인 포트폴리오, 제품 카탈로그 또는 사용자 프로필 사진과 같이 이미지 선명도가 중요한 시나리오에서 특히 유용합니다.
흐림의 임계값은 특정 요구에 따라 조정될 수 있습니다. 또한 Laravel 내 Python 통합은 필요한 경우 고급 이미지 처리 기술을 통합할 수 있는 유연성을 제공합니다.
흐릿한 이미지를 감지하기 위한 Laravel과 Python의 조합은 강력한 솔루션입니다. 이는 애플리케이션의 시각적 품질을 보장할 뿐만 아니라 전반적인 사용자 경험도 향상시킵니다. 이러한 접근 방식을 통해 개발자는 미디어 콘텐츠에 대한 높은 표준을 유지하여 더욱 세련되고 전문적인 온라인 환경을 조성하는 데 기여할 수 있습니다.
Laravel 프로젝트에서 이 솔루션을 구현해 보셨나요? 아래 의견에 귀하의 경험과 얻은 통찰력을 공유하십시오. 계속해서 함께 웹 개발의 수준을 높여갑시다!
위 내용은 Laravel의 흐린 이미지 감지의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!