기사 출처: https://medium.com/@hafiqiqmal93/blurry-image-Detection-in-laravel-4c91168e00f1
사용자 경험의 중요한 측면인 흐린 이미지를 저장하면 웹사이트나 애플리케이션의 품질이 크게 저하됩니다. 이 기사에서는 Python 및 OpenCV의 도움으로 Laravel을 사용하여 흐릿한 이미지를 감지하고 관리하여 애플리케이션의 미디어를 선명하고 매력적으로 유지하는 방법을 자세히 설명합니다.
흐릿한 이미지는 단순한 시각적 불편함 그 이상입니다. 웹사이트나 앱의 전문성을 훼손할 수 있습니다. 전자 상거래, 부동산 목록, 온라인 갤러리 또는 이미지 품질이 가장 중요한 플랫폼에서는 명확성을 보장하는 것이 필수적입니다. 문제는 프로그래밍 방식으로 흐릿함을 감지하는 것입니다.
Laravel은 Python과 결합하여 이 문제에 대한 효과적인 솔루션을 만들 수 있습니다. OpenCV를 활용하는 Python 스크립트와 함께 Laravel의 파일 유효성 검사를 활용함으로써 개발자는 파일 업로드 프로세스에 흐림 감지를 원활하게 통합할 수 있습니다.
흐릿한 이미지를 감지하려면 이미지의 선명도를 분석해야 합니다. 이는 일반적으로 이미지 처리에 사용되는 수학적 도구인 Laplacian 연산자를 사용하여 수행됩니다. 라플라시안 연산자는 픽셀 강도가 변경되는 속도를 측정하며, 라플라시안의 분산이 낮을수록 이미지가 더 흐려진다는 것을 나타냅니다.
Laravel에서는 이미지 흐릿함을 확인하는 사용자 정의 유효성 검사 규칙을 만들 수 있습니다. 이 규칙은 Laplacian 연산자를 사용하여 이미지의 선명도를 결정하는 Python 스크립트를 실행합니다. 프로세스를 분석해 보겠습니다.
PIP 설치(우분투) :
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 프로젝트에서 이 솔루션을 구현해 보셨나요? 아래 의견에 귀하의 경험과 얻은 통찰력을 공유하십시오. 계속해서 함께 웹 개발의 수준을 높여갑시다!
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3