記事の出典 https://medium.com/@hafiqiqmal93/blurry-image-detection-in-laravel-4c91168e00f1
ユーザー エクスペリエンスの重要な側面である、ぼやけた画像を保存すると、Web サイトやアプリケーションの品質が著しく損なわれます。この記事では、Python と OpenCV を利用して Laravel を使用してぼやけた画像を検出および管理し、アプリケーションのメディアを鮮明で魅力的な状態に保つ方法について詳しく説明します。
ぼやけた画像は、単に視覚的に迷惑なだけではありません。ウェブサイトやアプリの専門性を損なう可能性があります。電子商取引、不動産物件、オンライン ギャラリーなど、画質が最重要視されるプラットフォームでは、鮮明さを確保することが不可欠です。課題は、プログラムでぼやけを検出することにあります。
Laravel を Python と組み合わせて、この問題に対する効果的な解決策を作成できます。 OpenCV を利用した Python スクリプトと併せて Laravel のファイル検証を活用することで、開発者はぼやけ検出をファイルのアップロード プロセスにシームレスに統合できます。
ぼやけた画像の検出には、画像の鮮明度の分析が含まれます。これは通常、画像処理で使用される数学ツールであるラプラシアン演算子を使用して行われます。ラプラシアン オペレーターはピクセルの強度が変化する速度を測定し、ラプラシアンの分散が小さいほど画像がぼやけていることを示します。
Laravel では、画像のぼやけをチェックするカスタム検証ルールを作成できます。このルールは、ラプラシアン演算子を使用して画像の鮮明さを決定する Python スクリプトを実行します。プロセスを詳しく見てみましょう:
PIP (Ubuntu) をインストールします:
sudo apt install python3-pip
PIP を使用して OpenCV をインストールする
pip3 install opencv-python
アプリケーションが **www-data** で実行される場合は、**www-data** ユーザーにインストールすることを検討してください。 「はい」の場合は、以下のコマンドに従ってインストールします
<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>
ぼやけ検出のための Laravel と Python スクリプトの統合はシームレスに機能し、画像品質を確保するための洗練された簡単なアプローチを提供します。プロセスの展開は次のとおりです:
ユーザーが画像を Laravel アプリケーションにアップロードすると、カスタム検証ルール (ImageBlurDetectionRule) がトリガーされます。
このルールは、まず拡張子を確認することで、アップロードされたファイルが実際に画像であるかどうかを確認します。ファイルが画像でない場合、プロセスはここで停止します。
ファイルが画像の場合、ルールは Python スクリプト Blur_detection.py を呼び出します。画像のパスはコマンドライン引数としてこのスクリプトに渡されます。
スクリプトは、画像の鮮明さの尺度として機能するラプラシアンの分散を計算します。分散が小さいほど、画像がぼやけていることを示します。
画像がぼやけすぎる場合 (例: ラプラシアン分散がしきい値を下回る場合)、検証ルールは失敗し、画像がぼやけているためチェックする必要があることを示すメッセージをユーザーが受け取ります。
このソリューションは、低品質で不鮮明な画像のアップロードを防止することで、全体的なユーザー エクスペリエンスを向上させます。ユーザーは、アプリケーションの視覚標準を維持する、鮮明で高品質の画像のみをアップロードするように求められます。
这个过程是高度可定制的。开发人员可以根据应用程序的具体需求调整模糊阈值。请注意,阈值基于您的观察。对于高级使用,可能需要 ML 来确定阈值。此外,Laravel 中 Python 的集成允许进一步扩展到更先进的图像处理技术,为管理图像质量提供灵活而强大的解决方案。
将此功能合并到 Laravel 应用程序中可以防止上传低质量图像,从而增强用户体验。这在图像清晰度至关重要的场景中特别有用,例如在线作品集、产品目录或用户个人资料图片。
模糊阈值可以根据具体需求进行调整。此外,Laravel 中 Python 的集成提供了灵活性,可以在需要时结合更先进的图像处理技术。
Laravel 和 Python 的结合用于检测模糊图像是一个强大的解决方案。它不仅可以确保应用程序的视觉质量,还可以增强整体用户体验。通过这种方法,开发人员可以保持媒体内容的高标准,从而打造更加精致和专业的在线形象。
您是否尝试过在 Laravel 项目中实现此解决方案?在下面的评论中分享您的经验和获得的任何见解。让我们一起继续提升Web开发水平!
以上是Laravel 中的模糊图像检测的详细内容。更多信息请关注PHP中文网其他相关文章!