Как использовать «sips» на терминале для изменения размера изображения без масштабирования?

Как использовать «sips» на терминале для изменения размера изображения без масштабирования?

У меня есть код, который я использовал для изменения размера изображений в 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

Связанный контент