Combine imagens duplicadas por conteúdo e renomeie-as (para o nome da duplicata)

1

Eu tenho 2 pastas com mais de 5.000 fotos cada:

  • Pasta 1: os arquivos originais em boa qualidade, mas com nomes legíveis por humanos (por exemplo, saigon_motorcycle_traffic.jpg )
  • Pasta 2: os mesmos arquivos em qualidade muito ruim (largura de 450 px), mas com IDs limpos que correspondem a um banco de dados (por exemplo, 562634.jpg ).

O objetivo é combinar as imagens de alta resolução com os IDs do banco de dados.

Minha pergunta: Qual seria a maneira mais rápida de renomear a versão highres saigon_motorcycle_traffic.jpg para sua contraparte lowres 562634.jpg ?

Eu experimentei um monte de software (por exemplo, Duplicate photo cleaner , VisiPics , XnView, DupliFinder, ...), todos eles encontraram as duplicatas, mas nenhum deles ofereceu um caminho adequado para este tipo de renaiming ou um adequado função de exportação.

Edit: Eu não tentei nenhum script (como observado nos comentários) como eu não sei de nenhum e não encontrei nenhum. Se você souber de alguma coisa, por favor me avise.

Algumas coisas não funcionarão: a correspondência das dimensões da imagem não funcionará (a maioria das imagens tem as mesmas dimensões), a data de criação não funcionará (está tudo bagunçado) e é feita manualmente t trabalho desde que eu quero manter minha saúde mental; -)

    
por Eddie 15.04.2016 / 21:15

1 resposta

0

Acabei escrevendo uma rotina PHP (não vou postar o código completo como é uma solução realmente impura) que fez o truque.

Usando phasher , consegui iterar todos os arquivos de imagem e encontrar as duplicatas suspeitas (!): cada imagem é transformada em um pequeno hash (baseado em uma versão 8x8 da imagem). Esses hashes podem ser comparados.

2 coisas para ter em mente:

  • Como é um loop aninhado, é importante obter todos os hashes primeiro e armazená-los em cache antes de fazer a comparação real. Caso contrário, vai demorar uma eternidade.
  • a abordagem NÃO fornece resultados perfeitos. Eu tive uma pequena taxa de erro na primeira execução. Então, ainda havia alguma verificação de erros a ser feita.
por 16.04.2016 / 14:42