Artikel stammt von https://medium.com/@hafiqiqmal93/blurry-image-detection-in-laravel-4c91168e00f1
Das Speichern unscharfer 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, um
zu installieren.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.'));
}
}
}
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.
Durch das Verhindern des Hochladens von minderwertigen, verschwommenen Bildern verbessert diese Lösung das gesamte Benutzererlebnis. Benutzer werden aufgefordert, nur klare, qualitativ hochwertige Bilder hochzuladen, wodurch der visuelle Standard der Anwendung erhalten bleibt.
Dieser Prozess ist hochgradig anpassbar. Entwickler können den Schwellenwert für Unschärfe entsprechend den spezifischen Anforderungen ihrer Anwendung anpassen. Beachten Sie, dass der Schwellenwert auf Ihrer Beobachtung basiert. Für die Vorabnutzung ist möglicherweise ML erforderlich, um den Schwellenwert zu bestimmen. Darüber hinaus ermöglicht die Integration von Python in Laravel eine weitere Erweiterung um fortschrittlichere Bildverarbeitungstechniken und bietet eine flexible und robuste Lösung für die Verwaltung der Bildqualität.
Die Integration dieser Funktionalität in Ihre Laravel-Anwendung verbessert das Benutzererlebnis, indem das Hochladen von Bildern mit geringer Qualität verhindert wird. Dies ist besonders nützlich in Szenarien, in denen die Bildklarheit von entscheidender Bedeutung ist, wie z. B. Online-Portfolios, Produktkataloge oder Benutzerprofilbilder.
Der Schwellenwert für Unschärfe kann je nach Bedarf angepasst werden. Darüber hinaus bietet die Integration von Python in Laravel die Flexibilität, bei Bedarf fortschrittlichere Bildverarbeitungstechniken zu integrieren.
Die Kombination von Laravel und Python zur Erkennung verschwommener Bilder ist eine leistungsstarke Lösung. Es stellt nicht nur die visuelle Qualität Ihrer Anwendung sicher, sondern verbessert auch das gesamte Benutzererlebnis. Mit diesem Ansatz können Entwickler hohe Standards für Medieninhalte aufrechterhalten und so zu einer ausgefeilteren und professionelleren Online-Präsenz beitragen.
Haben Sie versucht, diese Lösung in Ihrem Laravel-Projekt zu implementieren? Teilen Sie Ihre Erfahrungen und Erkenntnisse, die Sie gewonnen haben, in den Kommentaren unten. Lassen Sie uns gemeinsam die Standards der Webentwicklung weiter erhöhen!
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3