記事の出典 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** ユーザーにインストールすることを検討してください。 「はい」の場合は、以下のコマンドに従って
をインストールします。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 を呼び出します。画像のパスはコマンドライン引数としてこのスクリプトに渡されます。
スクリプトは、画像の鮮明さの尺度として機能するラプラシアンの分散を計算します。分散が小さいほど、画像がぼやけていることを示します。
画像がぼやけすぎる場合 (例: ラプラシアン分散がしきい値を下回っている)、検証ルールは失敗し、画像がぼやけているためチェックする必要があることを示すメッセージがユーザーに表示されます。
このソリューションは、低品質で不鮮明な画像のアップロードを防止することで、全体的なユーザー エクスペリエンスを向上させます。ユーザーは、アプリケーションのビジュアル標準を維持する、鮮明で高品質の画像のみをアップロードするように求められます。
このプロセスは高度にカスタマイズ可能です。開発者は、アプリケーションの特定のニーズに応じて、ぼやけのしきい値を調整できます。しきい値は観察に基づいていることに注意してください。事前に使用するには、しきい値を決定するために ML が必要になる場合があります。さらに、Laravel 内での Python の統合により、より高度な画像処理技術へのさらなる拡張が可能になり、画像品質を管理するための柔軟で堅牢なソリューションが提供されます。
この機能を Laravel アプリケーションに組み込むと、低品質の画像のアップロードが防止され、ユーザー エクスペリエンスが向上します。これは、オンライン ポートフォリオ、製品カタログ、ユーザー プロフィール写真など、画像の鮮明さが重要なシナリオで特に役立ちます。
ぼやけのしきい値は、特定のニーズに応じて調整できます。さらに、Laravel 内での Python の統合により、必要に応じてより高度な画像処理技術を組み込むことができる柔軟性が提供されます。
ぼやけた画像を検出するための Laravel と Python の組み合わせは、強力なソリューションです。これにより、アプリケーションの視覚的な品質が保証されるだけでなく、全体的なユーザー エクスペリエンスも向上します。このアプローチにより、開発者はメディア コンテンツの高い基準を維持し、より洗練されたプロフェッショナルなオンライン プレゼンスに貢献できます。
このソリューションを Laravel プロジェクトに実装してみましたか?あなたの経験や得た洞察を以下のコメント欄で共有してください。これからも一緒に Web 開発の基準を高めていきましょう!
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3