Как мне обрезать изображения на 50% влево с помощью автомата?
Я знаю, что я могу пакетно обрезать изображения с помощью автомата на 50% по горизонтали, но затем он обрезается с обеих сторон... Мне нужно, чтобы обрезка была на 50% только с левой / правой стороны.
1 ответ
Я не знаю об Automator; Я бы использовал bash (в командной строке) для такого рода вещей.
Если у вас установлен ImageMagick (вы можете получить его из homebrew), вы можете использовать конвертирование, чтобы отрезать ту или иную сторону изображения.
Это даст вам левую сторону изображения (так что будет отрезана правая половина):
convert input.png -crop 50%x100%+0+0 output.png
становится 
Это даст вам правую сторону (обрезать левую половину изображения):
convert input.png -gravity east -crop 50%x100%+0+0 output.png
становится 
Действовать на каждый файл, заканчивающийся на .png в данном каталоге вы можете поместить его в цикл bash for:
for f in *.png; do convert "$f" -crop 50%x100%+0+0 "${f%.*}-cropped.png"; done
Делать это рекурсивно (каждый *.png в рабочем каталоге, и каждый *.png в любых подкаталогах), используйте globstar:
shopt -s globstar; for f in **/*.png; do convert "$f" -crop 50%x100%+0+0 "${f%.*}-cropped.png"; done
Все это создаст отдельный выходной файл (в этих примерах для каждого file.png там будет создан file-cropped.png). Чтобы работать с файлами без создания отдельного вывода, используйте mogrify (сопутствующий инструмент convert). Конечно, это приведет к перезаписи существующих файлов, поэтому будьте осторожны при их использовании. Mogrify может принимать несколько входных данных из командной строки, поэтому здесь нет необходимости использовать цикл for:
mogrify -crop 50%x100%+0+0 *.png
## Recursively:
shopt -s globstar; mogrify -crop 50%x100%+0+0 **/*.png
Если вы работаете с действительно огромным количеством файлов (тысяч), перечисленные выше глобусы могут подавиться; в этом случае вы должны использовать 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 '{}' \;
Вы можете поместить любой из этих вещей в скрипт bash следующим образом:
#!/usr/bin/env bash
for f in *.png; do convert "$f" -crop 50%x100%+0+0 "${f%.*}-cropped.png"; done
exit 0
Или более привлекательная версия:
#!/usr/bin/env bash
for f in *.png; do
convert "$f" -crop 50%x100%+0+0 "${f%.*}-cropped.png"
done
exit 0
... сохранить это в текстовом файле под названием что-то вроде crop-left.sh и установите его как исполняемый файл:
chmod u+x crop-left.sh
Чтобы использовать его из командной строки, было бы
./crop-left.sh
Я не знаю, как встроить это в Automator, так как я никогда не использовал эту программу, но, вероятно, это можно сделать.