Instagram recently added a feature to post up to 10 photos side by side. I saw someone cleverly used it to post a single panoramic photo. You split the panorama into square photos and then post them all at once to Instagram, which then arranges them side by side. Here's a quick & dirty script I wrote to split up my own panoramas into square photos. It uses a few Mac commands to get the size of the image, and ImageMagick to break up the images into smaller ones:
#!/bin/bash
if [ -z "$1" ]; then
echo "Usage: $0 filename.jpg"
exit
fi
filename="$1"
# Original image size
width=$(mdls -raw -name kMDItemPixelWidth "$filename")
height=$(mdls -raw -name kMDItemPixelHeight "$filename")
# Each of the square pieces will be 1/Nth the width
N=$[$width / $height]
if [ $N -gt 10 ]; then N=10; fi # maximum 10 allowed by instagram
size=$[$width / N]
if [ $height -lt $size ]; then size=$height; fi
# Use the center of the x,y range
x_offset=$[$[$width - $size * N] / 2]
y_offset=$[$[$height - $size] / 2]
echo "$filename : ${width}x${height}, $N parts"
if [ $x_offset -gt 0 ]; then
echo "Wide image; truncating $[2 * $x_offset] pixels"
else
x_offset=0
fi
if [ $y_offset -gt 0 ]; then
echo "Tall image; truncating $[2 * $y_offset] pixels"
else
y_offset=0
fi
for part in $(seq $[$N - 1] -1 0); do
crop="${size}x${size}+$[${x_offset} + ${size}*${part}]+${y_offset}"
echo " part $part : $crop"
convert "$filename" -crop "$crop" $part.jpg
done
I'm sure there are lots of things I could do better but I just wanted to get something working quickly.
Labels: howto
2 comments:
Subscribe to:
Post Comments (Atom)
interesting! now that instagram lets you post non-square photos, though, including panos, i wonder if there's any value to this other than the cool hack factor. :P
@Ryan: yes! If you post a pano it will appear really small until you pinch-zoom in, whereas if you post it this way it will appear zoomed in, and you can slide your finger to see the rest of the image. It depends on which UI you want.
Post a Comment