I'm not sure how to get a "fade in" effect.
Asked
Active
Viewed 964 times
7
-
2Is this question or some variant of it relevant/useful? – kglr Jul 04 '12 at 21:18
-
@kguler Thanks. I think it's useful, but a different question. – M.R. Jul 05 '12 at 03:30
2 Answers
12
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]

Set your images as a list:

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]

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]
Vitaliy Kaurov
- 73,078
- 9
- 204
- 355
-
You don't necessarily have to use the hyperbolic tangent; any number of "sigmoidal" functions ought to do the trick... – J. M.'s missing motivation Jul 05 '12 at 02:22
-
-
-
-
4
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]]]?