У меня есть код, который я использовал для изменения размера изображений в Mac OS X через командную строку (и/или quicksilver) до максимальной ширины или высоты 500 пикселей. Единственная проблема в том, что если исходное изображение меньше 500 пикселей по ширине или высоте, sips увеличит его. Я бы хотел, чтобы он просто пропускал эти изображения.
Как мне это осуществить?
Вот мой код:
#!/bin/баш для ARG в "$@" делать sips -Z 500 -s формат jpeg "$ARG" --out "${ARG%.*}.jpg" сделанный
решение1
Обработайте выходные данные sips --getProperty pixelHeight filename.ext
и sips --getProperty pixelWidth filename.ext
используйте их в условии, выполняя операцию изменения размера только при необходимости.
#!/bin/bash
height=`sips --getProperty pixelHeight url.png | sed -E "s/.*pixelHeight: ([0-9]+)/\1/g" | tail -1`
width=`sips --getProperty pixelWidth url.png | sed -E "s/.*pixelWidth: ([0-9]+)/\1/g" | tail -1`
if [[ $height -gt 500 || $width -gt 500 ]]; then
growlnotify -m "large file needs reducing"
fi
Остальное вы можете сделать самостоятельно.
решение2
Это считывает ширину и высоту изображения за одну команду.
#!/bin/bash
size=($(sips -g pixelWidth -g pixelHeight $theFile | grep -o '[0-9]*$'))
if [[ ${size[0]} -gt 500 || ${size[1]} -gt 500 ]]; then
growlnotify -m "large file needs reducing"
fi