Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

I'm not sure how to get a "fade in" effect.

share|improve this question
2  
Is this question or some variant of it relevant/useful? –  kguler Jul 4 '12 at 21:18
    
@kguler Thanks. I think it's useful, but a different question. –  M.R. Jul 5 '12 at 3:30
add comment

2 Answers 2

up vote 10 down vote accepted

Start from understanding and setting up an transition functions sequence:

Plot[Evaluate@Table[(1 + Tanh[tr (x - dt n)])/2, {n, 1, Length[imgs], 1}], {x, 0, 
  dt (Length[imgs] + 1)}, PlotStyle -> Thick]

enter image description here

Set your images as a list:

enter image description here

Set 2 main parameters of your animation:

tr = 1;(* transition speed *)
dt = 4;(* display time *)

Finally use interactive interface

Animate[Overlay[Table[SetAlphaChannel[imgs[[n]], (1 + Tanh[tr (x - dt n)])/2], {n, 1, 
    Length[imgs], 1}]], {x, 0, dt (Length[imgs] + 1), 
  ImageSize -> Small}, AnimationRate -> 2]

enter image description here

Or make a table and export as an .GIF image

gift = Table[Overlay[Table[SetAlphaChannel[imgs[[n]], (1 + Tanh[tr (x - dt n)])/2], {n,
       1, Length[imgs], 1}]], {x, 0, dt (Length[imgs] + 1), 
    dt (Length[imgs] + 1)/50}];

Export["MyVacationSlideShow.gif", gift]
share|improve this answer
    
You don't necessarily have to use the hyperbolic tangent; any number of "sigmoidal" functions ought to do the trick... –  J. M. Jul 5 '12 at 2:22
    
Lovely answer Vitaliy! See my answer below... –  M.R. Jul 5 '12 at 3:30
    
@J.M.Absolutely, I just like Tanh ;-) –  Vitaliy Kaurov Jul 5 '12 at 3:39
    
@Mike Thanks, your solution is cool too! +1 –  Vitaliy Kaurov Jul 5 '12 at 3:40
add comment

Vitaliy has a great answer, however I wanted to try my hand at this to get something a bit smoother in action by using Dynamics...

images = ImageResize[#, 500] & /@ ExampleData /@ ExampleData["TestImage"][[1 ;; 7]];
i = 1;
Dynamic[
    Which[Or @@ Thread[i == Range[Length[images]]], Pause[2]; i += .01, 
      i < Length[images] - 1, i += .01, 
      True, i = 1]; fade = Mod[i, 1];
 ImageCompose[images[[IntegerPart[i]]], {images[[IntegerPart[i] + 1]], fade}]
]

This works, but can someone please tell me why I can't substitute IntegerQ[i] for Or @@ Thread[i == Range[Length[images]]]?

share|improve this answer
1  
Re your question, i has head Real, not Integer. –  rm -rf Jul 5 '12 at 4:08
    
Yes, Head[1 + .01] is Real; try: i == Round[i] –  Mr.Wizard Jul 5 '12 at 6:42
    
Oh right, thanks! –  M.R. Jul 5 '12 at 12:55
add comment

Your Answer

 
discard

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.