At first, I did what came naturally: downloaded the photos, converted them all to "gif"s, and told gifsicle to create the animated gif. Well, it was a disaster. Not a real disaster (no animals were harmed), but the animation started out in portrait mode and then switched to… Bad. The original files didn't tell me that though!
collin@collin-t450:/tmp/iCloud Photos$ file IMG_*.JPG | sed -e 's/Exif.*one 6,//' -e 's/xresolution.*precision 8,//' IMG_0733.JPG: JPEG image data, orientation=upper-right, 3264x2448, components 3 IMG_0734.JPG: JPEG image data, orientation=upper-right, 3264x2448, components 3 IMG_0735.JPG: JPEG image data, orientation=upper-right, 3264x2448, components 3 IMG_0736.JPG: JPEG image data, orientation=upper-right, 3264x2448, components 3 IMG_0737.JPG: JPEG image data, orientation=upper-right, 3264x2448, components 3 IMG_0738.JPG: JPEG image data, orientation=upper-right, 3264x2448, components 3 IMG_0739.JPG: JPEG image data, orientation=upper-right, 3264x2448, components 3 IMG_0740.JPG: JPEG image data, orientation=upper-left, 3264x2448, components 3 IMG_0741.JPG: JPEG image data, orientation=upper-left, 3264x2448, components 3 IMG_0742.JPG: JPEG image data, orientation=upper-left, 3264x2448, components 3 IMG_0743.JPG: JPEG image data, orientation=upper-left, 3264x2448, components 3 IMG_0744.JPG: JPEG image data, orientation=upper-left, 3264x2448, components 3 collin@collin-t450:/tmp/iCloud Photos$The “sed ...” removes a bunch of “TIFF image data...” stuff that was the same for all the files; I wanted the above output more readable. The thing I want you to notice is that all the image files are supposedly 3264x2248 pixels. Now there is a clue in the “orientation=” stuff, but as I said, I know only very basic stuff about these things.
Now part of my process (i.e., when doing what came naturally) was to convert these JPEG files to GIFs. I think I did something like
for F in IMG*JPG; do convert $F ${F%.JPG}.gif; doneAfter that, the switch from portrait to landscape became more obvious:
collin@collin-t450:/tmp/iCloud Photos$ file IMG*gif IMG_0733.gif: GIF image data, version 89a, 2448 x 3264 IMG_0734.gif: GIF image data, version 89a, 2448 x 3264 IMG_0735.gif: GIF image data, version 89a, 2448 x 3264 IMG_0736.gif: GIF image data, version 89a, 2448 x 3264 IMG_0737.gif: GIF image data, version 89a, 2448 x 3264 IMG_0738.gif: GIF image data, version 89a, 2448 x 3264 IMG_0739.gif: GIF image data, version 89a, 2448 x 3264 IMG_0740.gif: GIF image data, version 89a, 3264 x 2448 ←landscape begins here IMG_0741.gif: GIF image data, version 89a, 3264 x 2448 IMG_0742.gif: GIF image data, version 89a, 3264 x 2448 IMG_0743.gif: GIF image data, version 89a, 3264 x 2448 IMG_0744.gif: GIF image data, version 89a, 3264 x 2448 collin@collin-t450:/tmp/iCloud Photos$
Now the good news is that when I switched from portrait to landscape,
Sheri's head remained roughly centered and about the same distance from the top
of the image. To cut to the chase, I wrote a shell “one-liner”
like this:
collin@collin-t450:/tmp/iCloud Photos$ for F in IMG_07*gif; do NEW=new${F#IMG_}; if file $F | grep "3264 x"; then C='2448x2448+408+0!' ; else C='2448x2448+0+0!'; fi; convert $F -crop $C +repage -resize 50% -remap IMG_0733.gif $NEW; done
which I'll explain tersely because it's time to go do something with the lovely Carol.
- NEW=new${F#IMG_} makes $NEW to be $F except with new replacing IMG_. So new0733.gif for example
- we check for landscape (those 3264 x 2448 images), and change the cropping parameter to fit the orientation of the original; that's what the C= stuff is.
- we need +repage to make the “canvas size” fit the image boundaries. No, I don't really know what that means. But if I don't do it, everything looks weird.
- -remap is so that all the new files will share the same colormap. Because gifsicle requires that.
collin@collin-t450:/tmp/iCloud Photos$ gifsicle -d 20 new*gif -o foo.gifyou can see the result on facebook if you’re Sheri’s “friend” there.
No comments:
Post a Comment