como encontrar imagens completamente brancas?

5

Verifiquei que muitas imagens em um site estão completamente em branco, ou seja, 500 x 500 com todos os pixels em branco. Todas as imagens estão em subdiretórios do diretório de imagens. Como posso verificar quais são brancos? Estou pensando em obter os nomes dessas imagens.

UPDATE :

  • Eu gostaria de usar algum script ou comando bash.
  • O Imagemagick está instalado
  • Servidor é Ubuntu 14.04
  • Todas as imagens são .jpg extensão
por hosseio 13.10.2016 / 19:26

2 respostas

3

Se você tiver - ou puder instalar - o pacote ImageMagick, ele tem um utilitário identify que pode imprimir um histograma das cores no arquivo; O programa awk abaixo fará a varredura da saída identify -verbose para o número de cores e as cores listadas no histograma. Se houver apenas uma cor listada e as únicas cores no histograma forem brancas, ela retornará "sucesso", caso contrário, "falha".

Você pode então envolver um script de shell no awk e identificar para sinalizar arquivos correspondentes:

for f in images/*
do
  identify -verbose "$f" | awk -f iswhite.awk && echo "$f is an all-white image"
done

iswhite.awk :

/Histogram:/ {
  inhisto=1
}
inhisto && /[[:digit:]]+: \([ [:digit:]]{3},[ [:digit:]]{3},[ [:digit:]]{3}\) #/ {
  if ($0 !~ /#FFFFFF white/) { nonwhite=1 }
}
/Rendering intent/ {
  inhisto=0
}
/Colors: / {
  ncolors=$2
}
END {
  if (ncolors == 1 && nonwhite == 0) { exit 0 } else { exit 1 }
}
    
por 13.10.2016 / 22:52
2

Usando findimagedupes :

# Look for and compare images that are 90% similar 
# in all subdirectories of the current directory.
findimagedupes -R -- .

A opção -t controla o grau de similaridade das imagens:

# Same as before but for images that are 99% similar.
findimagedupes -t 99 -R -- .

Suponha que um diretório tenha esses arquivos:

white.png foo.png. bar.png. baz.jpg green.png

... onde white.png era conhecido por ser branco, green.png era conhecido por ser verde , e o outro era incerto. Como findimagedupes produz arquivos semelhantes na mesma linha (separados por espaços), isso mostraria apenas os brancos:

findimagedupes -t 100 -R -- . | grep -w white.png

Saída, (assumindo que bar.png seja branco):

white.png bar.png

Veja também: Ferramenta de linha de comando para verificar se duas imagens são exatamente as mesmas graficamente e, mais geralmente: Um localizador de arquivos duplicado inteligente para Linux .

    
por 13.10.2016 / 21:04

Tags