Artigo originado de https://medium.com/@hafiqiqmal93/blurry-image-detection-in-laravel-4c91168e00f1
Aspecto crucial da experiência do usuário, o armazenamento de imagens borradas prejudica significativamente a qualidade de um site ou aplicativo. Este artigo investiga como você pode detectar e gerenciar imagens borradas usando Laravel com ajuda de Python e OpenCV, garantindo que a mídia do aplicativo permaneça nítida e envolvente.
Imagens borradas são mais do que apenas um incômodo visual; eles podem prejudicar o profissionalismo do seu site ou aplicativo. No e-commerce, nos anúncios de imóveis, nas galerias online ou em qualquer plataforma onde a qualidade da imagem é primordial, garantir a clareza é essencial. O desafio está em detectar a desfocagem de forma programática.
Laravel pode ser emparelhado com Python para criar uma solução eficaz para este problema. Ao aproveitar a validação de arquivos do Laravel junto com um script Python utilizando OpenCV, os desenvolvedores podem integrar perfeitamente a detecção de desfoque em seus processos de upload de arquivos.
A detecção de imagens borradas envolve a análise da nitidez da imagem. Isso normalmente é feito usando o operador Laplaciano, uma ferramenta matemática usada no processamento de imagens. O operador Laplaciano mede a taxa na qual a intensidade do pixel muda, e uma variação mais baixa do Laplaciano indica uma imagem mais desfocada.
No Laravel, podemos criar uma regra de validação personalizada para verificar o desfoque da imagem. Esta regra executa um script Python que usa o operador Laplaciano para determinar a nitidez da imagem. Vamos analisar o processo:
Instalar PIP (Ubuntu):
sudo apt install python3-pip
Instale OpenCV usando PIP
pip3 install opencv-python
Você pode querer considerar a instalação sob o usuário **www-data** se seu aplicativo for executado sob **www-data**. Se sim, siga os comandos abaixo para instalar
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.'));
}
}
}
A integração do Laravel com um script Python para detecção de desfoque funciona de maneira contínua, oferecendo uma abordagem sofisticada, porém direta, para garantir a qualidade da imagem. Veja como o processo se desenrola:
Quando um usuário carrega uma imagem para o aplicativo Laravel, a regra de validação personalizada (ImageBlurDetectionRule) é acionada.
Esta regra primeiro verifica se o arquivo enviado é de fato uma imagem, verificando sua extensão. Se o arquivo não for uma imagem, o processo para aqui.
Se o arquivo for uma imagem, a regra chama um script Python, blur_detection.py. O caminho da imagem é passado para este script como um argumento de linha de comando.
O script calcula a variância do Laplaciano, que serve como medida da nitidez da imagem. Uma variação menor indica uma imagem mais desfocada.
Se a imagem estiver muito desfocada (ex: a variação laplaciana está abaixo do limite), a regra de validação falha e o usuário recebe uma mensagem indicando que a imagem está desfocada e deve ser verificada.
Ao evitar o upload de imagens borradas e de baixa qualidade, esta solução melhora a experiência geral do usuário. Os usuários são solicitados a fazer upload apenas de imagens nítidas e de alta qualidade, o que mantém o padrão visual do aplicativo.
Este processo é altamente personalizável. Os desenvolvedores podem ajustar o limite de desfoque de acordo com as necessidades específicas de sua aplicação. Observe que o limite é baseado na sua observação. Para uso antecipado, pode ser necessário que o ML determine o limite. Além disso, a integração do Python no Laravel permite uma expansão adicional em técnicas de processamento de imagem mais avançadas, oferecendo uma solução flexível e robusta para gerenciar a qualidade da imagem.
A incorporação desta funcionalidade em seu aplicativo Laravel melhora a experiência do usuário, evitando o upload de imagens de baixa qualidade. Isso é particularmente útil em cenários onde a clareza da imagem é crítica, como portfólios on-line, catálogos de produtos ou fotos de perfil de usuário.
O limite de desfoque pode ser ajustado de acordo com necessidades específicas. Além disso, a integração do Python no Laravel oferece flexibilidade para incorporar técnicas de processamento de imagem mais avançadas, se necessário.
A combinação de Laravel e Python para detectar imagens borradas é uma solução poderosa. Ele não apenas garante a qualidade visual do seu aplicativo, mas também melhora a experiência geral do usuário. Com esta abordagem, os desenvolvedores podem manter padrões elevados para conteúdo de mídia, contribuindo para uma presença online mais refinada e profissional.
Você já tentou implementar esta solução em seu projeto Laravel? Compartilhe suas experiências e quaisquer insights que você obteve nos comentários abaixo. Vamos continuar a elevar os padrões de desenvolvimento web juntos!
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3