Como posso converter imagens em lote para b / w, preservando a estrutura de pastas?

5

Eu quero processar imagens em lote, mas tenho uma tarefa muito específica que quero fazer

  1. Eu não quero alterar o tipo de imagem
  2. Eu quero torná-los preto e branco
  3. Eu quero criar / preservar imagens e estrutura de subpastas

Eu fiz isso no Photoshop, mas ele não preservou o conteúdo de pastas e subpastas, apenas jogou todos os arquivos convertidos em um diretório.

Minha única esperança é o Linux: D

Obrigado antecipadamente!

Você pode ver uma discussão diferente sobre isso aqui, mas Basharat Sial trabalhou para mim

link

    
por Levan 10.05.2013 / 21:47

2 respostas

8

Podemos usar o comando convert para converter imagens em preto & amp; branco:

convert -colorspace GRAY image.png b-w_image.png

Em que image.png é a imagem de entrada e b-w_image.png é a saída imgage.

Combinando este comando com find , podemos criar um bash one liner para converter todas as imagens encontradas no diretório pai.

Como:
Abra o terminal pressionando Ctrl + Alt + T , cd para o diretório principal / pai e execute o seguinte comando:

for img in $(find . -iname '*.png'); do echo -n "Converting $img"; convert -colorspace GRAY $img $img && echo ' [Done]'; done

Ele irá converter e sobrescrever todas as imagens sob o diretório pai. Vou sugerir para testá-lo em algumas imagens temporárias e se você estiver satisfeito com os resultados do que executá-lo em imagens reais.

    
por Basharat Sialvi 10.05.2013 / 23:42
1

-monochrome é uma opção se você quiser binary black e branco (1bit por pixel).

Ele usa alguns dithering inteligente e gera resultados muito visíveis:

convert -monochrome in.png out.png

Antes :

Depois:

Para manter a estrutura de diretórios, você terá que fazer o script como mencionado pelo Basharat .