Load some images:
size = {200, 200};
foot = ImageResize[Import[
"http://upload.wikimedia.org/wikipedia/commons/a/ab/Monty_python_foot.png"
], size];
spikey = ImageResize[Import[
"http://upload.wikimedia.org/wikipedia/en/b/bf/MathematicaSpikeyVersion8.png"
], size];
mse = ImageResize[Import[
"https://i.stack.imgur.com/yjrEY.png"
], size];
Crop them, squash them, transform them:
feet = Table[ImageCrop[foot, size {1, k}, Top], {k, 0.1, 0.9, 0.1}];
spoke = Table[ImageResize[spikey, size {1, k}], {k, 0.9, 0.1, -0.1}];
logos = Table[ImagePerspectiveTransformation[mse,
FindGeometricTransform[{{0, 0}, {1, 0},
{0.5, 0.5} + {-(1/(-2 - 2 Cos[t])), (-4 - 3 Cos[t] + 8 Sin[t])/(8 + 8 Cos[t])},
{0.5, 0.5} + {1/(-2 - 2 Cos[t]), (-4 - 3 Cos[t] + 8 Sin[t])/(8 + 8 Cos[t])}},
{{0, 0}, {1, 0}, {1, 1}, {0, 1}}][[2]], Padding -> White], {t, 0, \[Pi]/2, \[Pi]/40}];
squish = Table[ImageCrop[logos[[1]], size {1, k}, Top], {k, 0.1, 0.9, 0.1}];
Assemble them together:
a = ImageAssemble[List /@ #] & /@ Thread[{feet, spoke}];
b = ImageAssemble[List /@ #] & /@ Thread[{Reverse@feet, squish}];
c = logos;
d = ConstantArray[Last@logos, 5];
Animate:
Export["logoanimate.gif", Join[a, b, c, d]]
