Writing images from manipulate
- To: mathgroup at smc.vnet.net
- Subject: [mg117621] Writing images from manipulate
- From: "W. Craig Carter" <ccarter at mit.edu>
- Date: Thu, 24 Mar 2011 06:32:20 -0500 (EST)
Dear MathGroup,
I am teaching a laboratory course. As part of one laboratory, students
run a simulation on their laptops and then use a generated image in
their lab reports.
I have a method of writing images from Manipulate, ***but it fails on
some but not all*** windows laptops that the students use.
I've made as simplified representation of the code and am pasting it
here. I hope that it is not too long to receive some advice.
The relevant bit is at the If[WriteImage,..] part. Is there a more
reliable way to save the image?
Also, I am wondering if the constant reevaluation of the
If[Evolution=="go",...] part can be avoided, or should I not worry
about it.
Just running the Manipulate will give a self-explanatory idea of what
the code is doing., Thanks Craig
seeds = RandomReal[{0, 1}, {20, 2}]
radii = ConstantArray[0, {20}]
colors = Hue /@ RandomReal[{0, 1}, {20}]
Manipulate[
If[reset,
radii = ConstantArray[0, {20}]; reset = False;
currentgraphic =
currentgraphic =
Graphics[
GraphicsComplex[seeds,
Map[{colors[[#]], Disk[#, radii[[#]]]} &, Range[20]]]]];
If[WriteImage,(*works on a mac, works on *some* windows*)
nb = CreatePalette[nm = SystemDialogInput["FileSave"]];
WriteImage = False;
Export[nm, currentgraphic];
NotebookClose[nb]
];
If[Evolution == "Go", (*constant evaluation of the if?*)
radii += RandomReal[{0, .0001}, {20}];
currentgraphic =
Graphics[
GraphicsComplex[seeds,
Map[{colors[[#]], Disk[#, radii[[#]]]} &, Range[20]]]];
];
currentgraphic,
{Evolution, {"Stop", "Go"}, ControlType -> RadioButton, Labeled -> False},
{{WriteImage, False, "Write Image File"}, {True, False},
ControlType -> Checkbox, Labeled -> False},
{{reset, False, "reset to zero"}, {True, False}, ControlType -> Checkbox,
Labeled -> False},
TextCell[
"Use .tiff, .gif, or .jpeg, etc, file extensions explicitly for image file \
formats"],
SynchronousUpdating -> True,
Initialization -> (
currentgraphic =
currentgraphic =
Graphics[
GraphicsComplex[seeds,
Map[{colors[[#]], Disk[#, radii[[#]]]} &, Range[20]]]])
]