An alternative to saving images is to save the graphics themselves with DumpSave.
per = 12.34;
myPlots =
Table[ListPlot[Table[Sin[2 \[Pi] x/per], {x, i}] + RandomReal[.1, {i}]],
{i, 100, 200, 10}];
DumpSave[FileNameJoin[{NotebookDirectory[], "foo.mx"}], myPlots];
Manipulate[
Show[myPlots[[i]], Framed -> True],
{i, 1, Dynamic @ Length @ myPlots, 1},
Initialization :> (Get[FileNameJoin[{NotebookDirectory[], "foo.mx"}]])]
One can alter the options to the Graphics, such as adding a frame, and interact with the output as Graphics. This can't be done with images, at least in the same way.
Another alternative that is more self-contained is below. It auto-generates the plots and the .mx file if the file is missing. Of course that takes time, but the notebook file containing the Manipulate can be sent alone and the Manipulate output can be copied and pasted into another notebook, which might be in a different directory or in no directory at all. This means that the notebook can be shared with or without the accompanying .mx file.
If there is no .mx file, then the Manipulate pauses while all the plots are generated. This is accomplished by the combination of
SynchronousInitialization -> False,
and the line in the Initialization:
`Do[plot[nn], {nn, 100, 200, 10}]`
(This line may be omitted, but there will be a wait each time a plot is displayed for the first time. Once all the plots have been generated, the Manipulate will operate smoothly.)
The plots are generated and stored via memoization, as in Anon's answer, and the definitions create are save by DumpSave in the Deinitialization. It's not absolutely foolproof, e.g. Mathematica crashes, or a user executes Clear[plot].
Manipulate[
Show[plot[n], Frame -> True],
{n, 100, 200, 10}, {directory, None},
SynchronousInitialization -> False,
Initialization :> (
directory = Quiet@Check[NotebookDirectory[], $TemporaryDirectory];
per = 12.34;
Quiet@Get[FileNameJoin[{directory, "foo2.mx"}]];
(* this would have been loaded from the .mx ... unless there's no .mx file *)
plot[n_] := plot[n] =
ListPlot[Pause[0.5]; Table[Sin[2 Pi x/per], {x, n}] + RandomReal[.1, {n}]];
(* fast if plot is loaded from .mx; otherwise predefines all the plots *)
Do[plot[nn], {nn, 100, 200, 10}]
),
Deinitialization :> DumpSave[FileNameJoin[{directory, "foo2.mx"}], plot]
]