A little sips

Pinboard Popular is currently featuring a listicle written by Mitchell Cohen entitled “Eight Terminal Utilities Every OS X Command Line User Should Know.” It’s a decent enough list, but it’s missing one of my favorites, sips. Sips is the “scriptable image processing system,” and I’ve written about it here a few times. I used it today to solve a big problem in no time at all.

I had a folder of a few hundred photographs that I wanted to share with a client. Sending him a Dropbox link was the obvious solution, but uploading that many photos, each of which is 5-10 MB, would take too long, and he wouldn’t be interested in the details of the full resolution photos anyway. The obvious solution was to downsample the photos to a more reasonable size before uploading; I figured 1024 pixels in the long direction would be just right.

I’m sure there are plenty of GUI utilities that could do the resizing, but I can’t imagine any of them being easier to use than sips. I copied the folder of photos, opened a Terminal window that was cd’d to that directory1, and ran

sips -Z 1024 *

Sips chugged away at the files, resizing them in place, and spitting lots of info out to the Terminal as it did so. (Traditional Unix utilities are laconic; most of Apple’s command line utilities are anything but. Sips is positively garrulous.) I soon had over four hundred modestly sized JPEGs taking up about 80 MB in total. The upload to Dropbox was quick.

The key is the -Z option. As the man page says, this option, which has a long equivalent of --resampleHeightWidthMax, will

Resample image so height and width aren’t greater than specified size.

Sips has options for resampling to a specified height (--resampleHeight) and to a specified width (--resampleWidth), but I find myself using -Z more often than either of those.

Sips doesn’t have to resize in place. There’s an option for making a new file, but I seldom use it because it’s just faster to make a copy and resize that in place.

  1. I have a Finder toolbar button that opens a Terminal window with the current working directory set to the directory shown in the Finder window.