Como faço o agrupamento de imagens em lote a 50% à esquerda com o automator?

1

Eu sei que posso agrupar imagens em lote com um automatismo para 50% na horizontal, mas depois ele é cortado em ambos os lados ... Eu preciso que ele seja 50% aparado apenas no lado esquerdo / direito.

    
por mesqueeb 25.05.2013 / 13:28

1 resposta

3

Eu não sei sobre o Automator; Eu usaria o bash (na linha de comando) para esse tipo de coisa.

Se você tiver o ImageMagick instalado (você deve ser capaz de obtê-lo de homebrew ), você pode use converter para cortar um lado ou outro de uma imagem.

Isso lhe dará o lado esquerdo da imagem (assim cortará a metade direita):

convert input.png -crop 50%x100%+0+0 output.png

torna-se

Isso lhe dará o lado direito (corte a metade esquerda da imagem):

convert input.png -gravity east -crop 50%x100%+0+0 output.png

torna-se

Para atuar em todos os arquivos que terminam com .png em um determinado diretório, você pode colocá-lo em um bash para loop:

for f in *.png; do convert "$f" -crop 50%x100%+0+0 "${f%.*}-cropped.png"; done

Para fazer isso de forma recursiva (a cada *.png no diretório de trabalho e a cada *.png em qualquer subdiretório), use globstar:

shopt -s globstar; for f in **/*.png; do convert "$f" -crop 50%x100%+0+0 "${f%.*}-cropped.png"; done

Todos eles criarão um arquivo de saída separado (nesses exemplos, para cada file.png , será criado um file-cropped.png ). Para trabalhar em arquivos sem criar uma saída separada, use mogrify (a ferramenta complementar de convert ). Naturalmente, este irá sobrescrever seus arquivos existentes , portanto tenha cuidado ao usá-lo. Mogrify é capaz de receber múltiplas entradas da linha de comando, então não há necessidade de usar um loop para aqui:

mogrify -crop 50%x100%+0+0 *.png
##  Recursively:
shopt -s globstar; mogrify -crop 50%x100%+0+0 **/*.png

Se você estiver trabalhando com um número realmente grande de arquivos (milhares), os globs acima podem sufocar; Nesse caso, você deve usar find :

##  For convert:
find . -type f -name '*.png' -execdir bash -c 'convert "$0" -crop 50%x100%+0+0 "${0%.*}-cropped.png"' '{}' \;

##  For mogrify:
find . -type f -name '*.png' -execdir mogrify -crop 50%x100%+0+0 '{}' \;

Você pode colocar qualquer uma dessas coisas em um script bash da seguinte forma:

#!/usr/bin/env bash
for f in *.png; do convert "$f" -crop 50%x100%+0+0 "${f%.*}-cropped.png"; done
exit 0

Ou uma versão mais agradável:

#!/usr/bin/env bash
for f in *.png; do
  convert "$f" -crop 50%x100%+0+0 "${f%.*}-cropped.png"
done
exit 0

... salve isso em um arquivo de texto simples chamado algo como crop-left.sh e defina-o como executável:

chmod u+x crop-left.sh

Para usá-lo na linha de comando, seria

./crop-left.sh

Eu não sei como encaixar isso no Automator, já que nunca usei esse programa, mas provavelmente ele pode ser feito.

    
por 25.05.2013 / 14:49