Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have some code that I've been using to resize images in Mac OS X via the command prompt (and/or quicksilver), to a maximum width or height of 500px. The only problem is that if the original image is smaller than 500px width or height, sips will upscale it. I would want it to just skip these images.

How can I make that happen?

This is my code:


for ARG in "$@"
        sips -Z 500 -s format jpeg "$ARG" --out "${ARG%.*}.jpg"
share|improve this question
up vote 3 down vote accepted

Process the output of sips --getProperty pixelHeight filename.ext and sips --getProperty pixelWidth filename.ext and use it in a condition, only performing the resize operation if desired.

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"

You can do the rest on your own.

share|improve this answer
It doesn't seem to be possible using sips alone. – Daniel Beck Feb 3 '11 at 12:49
Thanks! Could you give an example of how to do it with the conditional statement? – cwd Feb 4 '11 at 17:35
@cwd See edited post – Daniel Beck Feb 4 '11 at 18:13
Thanks so much for inserting the regex to extract the actual size.. saved me a lot of frustration! – Ben Clayton Apr 19 '12 at 16:24

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.